Попытка обновить политики доступа к сервису в 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"]
         }
       }
     }
  ]
}

Где "Заявление" - это список изменений правил.

Надеюсь, это спасет кого-то еще от подобной головной боли:)

Другие вопросы по тегам