【问题标题】:AWS Lambda to proxy ElasticSearch Service using C#AWS Lambda 使用 C# 代理 ElasticSearch 服务
【发布时间】:2018-11-20 22:19:47
【问题描述】:

我正在尝试使用 c# 创建一个 AWS lamda 来访问 AWS ElasticSerch 服务。我创建了一个角色,我的 lambda 函数配置为使用该角色可以访问 ElasticSeach。但是权限似乎不起作用。

这是我的设置:

  1. 我创建了一个对 ES 服务具有读写访问权限的访问策略。

  2. 创建角色并分配上述策略

  3. 我已将此角色授予我的 ES 集群的权限。

{
  "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/*"
    }
  ]
}
  1. 我在 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 Forbidden 错误。我什至尝试为该角色设置与 es.amazonaws.com 的信任关系。那也没用。

如果我将 ES 集群公开,我可以看到响应。

此方法是否适用于 Lambda?我是否缺少某些权限?

【问题讨论】:

  • 我认为您需要使用签名版本 4 签署您的请求。请参阅 aws.amazon.com/blogs/security/…
  • 知道了。我能够通过签署请求让它工作。谢谢
  • 干杯将其添加为答案

标签: amazon-web-services aws-lambda aws-elasticsearch aws-sdk-net


【解决方案1】:

我认为您需要使用签名版本 4 签署您的请求。请参阅 this

【讨论】:

    猜你喜欢
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    • 2020-08-25
    • 2017-07-28
    • 2019-09-04
    • 2020-05-28
    相关资源
    最近更新 更多