我试图在java代码中更新Amazon CloudSearch域的访问策略,似乎可能但是它的API似乎缺乏。到目前为止我的代码是:
cloudSearchClient.updateServiceAccessPolicies(
new UpdateServiceAccessPoliciesRequest()
.withDomainName("test-eme1")
.withAccessPolicies("???"));
UpdateServiceAccessPoliciesRequest只接受两个参数:CloudSearch域(String)和访问策略(另一个String)。
' withAccessPolicy'的在线文档和javadoc两者都这样说: "您要配置的访问规则。这些规则取代了现有规则。"
您应该使用单个String定义多个访问规则这一事实意味着UpdateServiceAccessPoliciesRequest类是一个用于http请求的多边形设计容器,我可以忍受,但是有谁知道是什么"访问政策" update String在这个上下文中看起来像?
我使用的是AWS Java SDK 1.7.9版,我几乎肯定使用了CloudSearch REST API版本2013-01-01。
答案 0 :(得分:0)
我进一步挖掘,发现UpdateServiceAccessPoliciesRequest被序列化为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"]
}
}
}
]
}
何处'陈述'是一个规则更改列表。
希望这可以为其他人带来类似的麻烦:)