Я изо всех сил пытался выяснить, как общаться с сервисом Amazon ES из моих экземпляров EC2.
В документации четко указано, что служба Amazon ES поддерживает политики доступа на основе пользователя и роли IAM. http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-createupdatedomains.html#es-createdomain-configure-access-policies
Однако, когда у меня есть эта политика доступа для моего домена ES:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789:role/my-ec2-role"
},
"Action": "es:*",
"Resource": "arn:aws:es:us-west-2:123456789:domain/myDomain/*"
}
]
}
Я не могу войти в экземпляр ec2 и запустить завиток, чтобы попасть в свой кластер elasticsearch.
Попытка сделать простой завиток API-интерфейса _search:
curl "http://search-myDomain.es.amazonaws.com/_search"
Выдает ответ об ошибке проверки подлинности:
{"Message":"User: anonymous is not authorized to perform: es:ESHttpGet on resource: arn:aws:es:us-west-2:123456789:domain/myDomain/_search"}
Просто, чтобы быть более безопасным, я ставлю политику AmazonESFullAccess
на мою роль IAM, но не работает.
Я должен что-то упустить, потому что возможность программного взаимодействия с Elasticsearch из экземпляров ec2, использующих роль IAM, необходима для получения чего-либо, достигнутого с помощью службы Amazon ES.
Я также вижу это противоречивое утверждение в документах.
Пример политики на основе IAM. Вы создаете политики доступа на основе IAM посредством используя консоль AWS IAM, а не консоль Amazon ES. Для информация о создании политик доступа на основе IAM, см. IAM документация.
Эта ссылка на документацию IAM находится на домашней странице IAM и содержит ровно нулевую информацию о том, как это сделать. Кто-нибудь получил решение для меня?