Я пытаюсь использовать Elasticsearch для хранения данных для лямбда-функции, подключенной к Alexa Skills Kit. Лямбда работает хорошо без Elasticsearch, но ES обеспечивает столь необходимое нечеткое соответствие.
Единственный способ получить доступ к нему через Lambda - это включить глобальный доступ Elasticsearch, но это действительно плохая идея. Я также смог получить доступ со своего компьютера через политику открытого доступа или политику IP-адресов. Есть ли способ сделать доступ только для чтения через Lambda и чтения-записи через IP?
На IAM я предоставил свою лямбда-роль 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"
}
}
}
]
}
Этот пост форума задает тот же вопрос, но остался без ответа.