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

通过IAM角色访问他人S3桶,如何配置Lambda触发事件?

解决方案

明确结论:必须请求S3桶的所有者配合完成部分配置——因为桶的事件通知、资源策略修改属于桶所有者的权限范围,你无法直接操作。

具体操作分为两部分:

你需要完成的配置

  1. 创建目标Lambda函数,确保其执行角色具备以下核心权限:
    • 允许扮演你已有的、能访问该S3桶的IAM角色(如果Lambda需要读取桶内对象)
    • Lambda基础执行权限(比如写入CloudWatch日志)
      示例IAM权限片段:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "sts:AssumeRole",
          "Resource": "arn:aws:iam::[对方账号ID]:role/[你被授予的角色名]"
        },
        {
          "Effect": "Allow",
          "Action": [
            "logs:CreateLogGroup",
            "logs:CreateLogStream",
            "logs:PutLogEvents"
          ],
          "Resource": "arn:aws:logs:*:*:*"
        }
      ]
    }
    
  2. 如果Lambda需要读取桶内对象,在函数代码中通过sts:AssumeRole获取对方角色的临时凭证,再用该凭证访问S3——不要试图直接给Lambda执行角色添加S3权限,你没有配置权限。

桶所有者需要完成的配置

  1. 给S3桶添加事件通知规则,指定当有新对象存入时触发你的Lambda函数。若Lambda和S3不在同一AWS账号,还需在Lambda的资源策略中添加允许该S3桶触发的权限(你可以提前将Lambda的ARN提供给桶所有者)。
  2. (可选)如果你的Lambda无需扮演已有角色、需要直接访问桶,桶所有者需在S3桶的资源策略中添加允许Lambda执行角色访问桶的权限,但这种方式不如使用你已有的授权角色安全。

补充:你确实无法通过CDK执行bucket.grantRead(bucketLambda),因为该操作会修改S3桶的资源策略,而你没有该桶的所有权,必须由桶所有者完成这部分配置。

内容的提问来源于stack exchange,提问作者bmargulies

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 06:35:59