授予 Lambda 对 Opensearch 的访问权限 [IAM 和配置域级别访问策略] [重复]

Posted

技术标签:

【中文标题】授予 Lambda 对 Opensearch 的访问权限 [IAM 和配置域级别访问策略] [重复]【英文标题】:Give access Lambda to Opensearch [IAM & Configure domain level access policy] [duplicate] 【发布时间】:2022-01-22 04:55:13 【问题描述】:

我需要您帮助我制定正确的政策。我正在使用 ACloud Guru AWS Sandbox,并且我正在尝试使用 elasticsearch lib 来在 lambda 上运行 python 代码。但是对于 Opensearch,只能使用“配置域级别访问策略”。我通过策略为我的家庭 IP 开放了访问权限:

    
  "Version": "2012-10-17",
  "Statement": [
    
      "Effect": "Allow",
      "Principal": 
        "AWS": "*"
      ,
      "Action": "es:*",
      "Resource": "arn:aws:es:us-east-1:yyyyyyyyyyy:domain/test-es-1/*",
      "Condition": 
        "IpAddress": 
          "aws:SourceIp": "xx.xx.xxx.xx/32"
        
      
    
  ]

它对我来说很好,现在我试图在 Lambda 上运行一些简单的代码并得到一个错误

"errorMessage": "AuthorizationException(403, '"Message":"用户:匿名无权执行:es:ESHttpPut"')","errorType": "AuthorizationException",

我决定打开区域 us-east-1 并添加部分:


  "Effect": "Allow",
  "Action": "es:*",
  "Principal": 
    "AWS": "*"
  ,
  "Resource": "arn:aws:es:us-east-1:yyyyyyyyyyy:domain/test-es-1/*",
  "Condition": 
      "StringEquals": 
          "aws:RequestedRegion": "us-east-1"
      
  

但我无法保存策略,出现错误:

UpdateDomainConfig: "message":"对您的域应用限制性访问策略"

也许我的方向错误,有人可以帮助我解决问题或推动我朝着正确的方向前进。

提前谢谢你, BR 阿列克谢。

【问题讨论】:

这能回答你的问题吗? Deployment of servless app fails - Enable fine-grained access control or apply a restrictive access policy to your domain 【参考方案1】:

从Deployment of servless app fails - Enable fine-grained access control or apply a restrictive access policy to your domain 中提取,AWS 似乎认为您的方法过于公开。请检查上一篇文章/答案中列出的替代方法。如果您想知道如何使某个方法适用于您的用例,请告诉我,我们可以深入研究!

【讨论】:

以上是关于授予 Lambda 对 Opensearch 的访问权限 [IAM 和配置域级别访问策略] [重复]的主要内容,如果未能解决你的问题,请参考以下文章

AWS OpenSearch 客户端错误:无法验证服务器是 Elasticsearch

Axios 对 Opensearch/Elasticsearch 的请求

如何授予 API Gateway 通过 CloudFormation 调用 lambda 函数的权限?

使用无服务器框架的 lambda AWS 中的授权代码授予

是否可以向使用 AWS Amplify 预置的 lambda PostAuthenticate 函数授予额外权限?

AWS API Gateway 的访问权限