You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS SAM中Lambda访问OpenSearch的IAM策略验证失败求助

解决Lambda访问OpenSearch的IAM策略无效问题

问题根源

你的IAM策略里的Resource字段存在两个错误:

  • 包含了无效的DomainName: mynewdomain项:IAM策略的Resource只能是ARN格式字符串,不能使用键值对形式
  • 原ARNarn:aws:es:eu-west-1:22222222222:domain/mynewdomain仅指向OpenSearch域本身,若Lambda需要操作域内的索引、文档等资源,权限范围不够

修正后的SAM模板代码

Replicate:
  Type: AWS::Serverless::Function
  Properties:
    FunctionName: !Sub ${AWS::StackName}-Replicate
    Description: !Sub
      - Stack ${StackTagName} Environment ${EnvironmentTagName} Function ${ResourceName}
      - ResourceName: DBReplicate
    CodeUri: ../src/Replicate
    Handler: index.handler
    Runtime: nodejs16.x
    MemorySize: 3008
    Timeout: 30
    Tracing: Active
    Policies:
      - PolicyName: Access
        PolicyDocument:
          Version: "2012-10-17"
          Statement:
            - Effect: Allow
              Action:
                # 建议根据实际需求细化权限,比如仅允许文档写入操作
                # - es:IndexDocument
                # - es:UpdateDocument
                # - es:DeleteDocument
                - es:*
              Resource:
                # 覆盖域内所有资源的ARN
                - arn:aws:es:eu-west-1:22222222222:domain/mynewdomain/*
    Events:
      MyDynamoDBtable:
        Type: DynamoDB
        Properties:
          Stream: !Ref TableStreamArn
          StartingPosition: TRIM_HORIZON
          BatchSize: 1

关键修改说明

  1. 移除无效Resource项:删掉了DomainName: mynewdomain,只保留合法的ARN格式资源
  2. 扩展Resource权限范围:在ARN末尾添加/*,让Lambda能访问OpenSearch域内的所有子资源(索引、文档等)
  3. 可选:细化Action权限:如果不需要全量es:*权限,可以替换为实际需要的操作(比如es:IndexDocument),遵循最小权限原则

运行sam validate即可通过策略校验。

内容的提问来源于stack exchange,提问作者moh.s

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 14:05:23