我最近开始使用新的Amazon Elasticsearch Service,我似乎无法弄清楚我需要的访问策略,因此我只能从我的EC2实例访问具有特定IAM角色的服务.
以下是我目前为ES域分配的访问策略的示例:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::[ACCOUNT_ID]:role/my_es_role",
]
},
"Action": "es:*",
"Resource": "arn:aws:es:us-east-1:[ACCOUNT_ID]:domain/[ES_DOMAIN]/*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
但正如我所说,这不起作用.我登录到EC2实例(my_es_role附加了角色)并尝试在"https://*.es.amazonaws.com"端点上运行简单的curl调用,我收到以下错误:
{"消息":"用户:匿名无权执行:es:ESHttpGet on resource:arn:aws:es:us-east-1:[ACCOUNT_ID]:domain/[ES_DOMAIN] /"}
有没有人知道我必须在访问策略中更改什么才能使其正常工作?
amazon-ec2 amazon-web-services elasticsearch amazon-iam amazon-elasticsearch
我正在尝试将Elasticsearch用于连接到Alexa Skills Kit的Lambda函数的数据存储.Lambda在没有Elasticsearch的情况下正常工作,但ES提供了急需的模糊匹配.
我能够从Lambda访问它的唯一方法是启用Elasticsearch全局访问,但这是一个非常糟糕的主意.我也可以通过开放访问策略或IP地址策略从我的计算机访问.有没有办法通过Lambda进行只读访问和通过IP进行读写?
在IAM上,我授予了我的Lambda角色AmazonESReadOnlyAccess.在ES方面,我试过这个,但它只适用于IP地址:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::NUMBER:root",
"arn:aws:iam::NUMBER:role/lambda_basic_execution"
]
},
"Action": "es:*",
"Resource": "arn:aws:es:us-east-1:NUMBER:domain/NAME/*"
},
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "es:*",
"Resource": "arn:aws:es:us-east-1:NUMBER:domain/NAME/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": "MY IP"
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
该论坛帖子提出了同样的问题,但未得到答复.