我正在尝试使用c#创建一个AWS lamda来访问AWS ElasticSerch服务。我创建了一个角色,可以将我的lambda函数配置为使用该角色,该角色可以访问ElasticSeach。但是许可似乎并不起作用。
这是我的设置:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::XXXXXXXXXXX:role/lambda-es-role"
},
"Action": "es:*",
"Resource": "arn:aws:es:us-west-2:XXXXXXXXXXXXXx:domain/es-test-es/*"
}
]
}
我在lambda中有一个简单的代码,看是否可以连接到它。
public async Task<string> FunctionHandler()
{
HttpClient client = new HttpClient();
var response = await client.GetStringAsync("https://XXXXX.us-west-2.es.amazonaws.com/firstindex");
return response;
}
这给我403禁止错误。我什至尝试与es.amazonaws.com建立角色的信任关系。那也不起作用。
如果将ES群集公开,则可以看到响应。
此方法可用于Lambda吗?我缺少一些权限吗?