Попытка обновить политики доступа к сервису в CloudSearch с помощью Java SDK
Я пытаюсь обновить политики доступа для домена Amazon CloudSearch в коде Java, и это представляется возможным, но API для этого, похоже, не хватает. Мой код до сих пор:
cloudSearchClient.updateServiceAccessPolicies(
new UpdateServiceAccessPoliciesRequest()
.withDomainName("test-eme1")
.withAccessPolicies("???"));
UpdateServiceAccessPoliciesRequest принимает только два параметра: домен CloudSearch (строка) и политики доступа (другая строка).
В электронной документации и javadoc для 'withAccessPolicy' есть следующее:"Правила доступа, которые вы хотите настроить. Эти правила заменяют существующие правила".
Сам факт того, что вы должны определять здесь несколько правил доступа с помощью одной строки, означает, что класс UpdateServiceAccessPoliciesRequest является поли-разработанным контейнером для запроса http, и я могу с этим смириться, но кто-нибудь знает, что такое "политики доступа" Как выглядит строка обновления в этом контексте?
Я использую AWS Java SDK версии 1.7.9, и я почти уверен, что использую CloudSearch REST API версии 2013-01-01.
1 ответ
Я продолжил копаться и обнаружил, что GetServiceAccessPoliciesRequest get сериализован в x-www-form-urlencoded и что параметр AccessPolicies ожидает большую старую строку JSON:
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Principal": {
"AWS":["*"]
},
"Action":"cloudsearch:*",
"Resource":"arn:aws:cloudsearch:us-east-1:000123456789:domain/test-eme1",
"Condition":{
"IpAddress":{
"aws:SourceIp":["0.0.0.0/0"]
}
}
}
]
}
Где "Заявление" - это список изменений правил.
Надеюсь, это спасет кого-то еще от подобной головной боли:)