【发布时间】:2017-01-09 00:56:35
【问题描述】:
设置 AWS Elasticsearch 后,我在静态 IP 服务器上安装了 Logstash 和 Kibana 代理,并在 ES 上添加了这个域访问策略,它工作正常:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "es:*",
"Resource": "arn:aws:es:ap-southeast-1:323137313233:domain/sg-es-logs/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"192.192.192.192"
]
}
}
}
]
}
现在我需要允许 Lambda 函数在 AWS ES 上执行 es:ESHttpDelete 操作,因此我使用现有角色 service-role/Elasticsearch 创建了该函数,然后从 IAM 管理控制台复制了相关的 ARN 以将其添加到 AWS ES 访问政策,想出这个:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam:: 323137313233:role/service-role/Elasticsearch"
]
},
"Action": [
"es:*"
],
"Resource": "arn:aws:es:ap-southeast-1:323137313233:domain/sg-es-logs/*"
}
]
}
问题出在 ES 上,我应该为静态 IP 或 ARN 选择域访问策略,但不能同时选择两者。当我尝试手动合并它们而不是使用控制台时,它不起作用。我检查了 AWS 文档,但他们没有提到这是否可能。
【问题讨论】:
-
FWIW,亚马逊开发人员支持非常好,但每月花费 30 美元。我不知道答案,正如你所说,文档并没有真正谈论如何做你想做的事情。
-
您的第一个保单有一个禁止的 Principal 字段。你是怎么让它工作的?不要指定委托人,而是尝试添加第二个条件来比较委托人 ARN
标签: amazon-web-services elasticsearch aws-lambda amazon-elasticsearch aws-access-policy