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

MWAA中使用S3KeySensor遇403权限错误的排查求助

MWAA中S3KeySensor报403 Forbidden问题排查

问题场景

使用MWAA的S3KeySensor监听S3文件时,代码如下:

sensor = S3KeySensor(
    task_id="wait-for-my-file",
    bucket_key="my-file.txt",
    bucket_name="my-bucket",
)

持续收到错误:

botocore.exceptions.ClientError: An error occurred (403) when calling the HeadObject operation: Forbidden

已配置权限

通过Terraform为MWAA执行角色添加了以下权限(已在AWS控制台确认生效):

statement {
  effect  = "Allow"
  actions = ["s3:HeadObject"]
  resources = [
    "arn:aws:s3:::my-bucket",
    "arn:aws:s3:::my-bucket/*",
  ]
}

同时按照文档添加了s3:GetAccountPublicAccessBlock权限:

statement {
  effect    = "Allow"
  actions   = ["s3:GetAccountPublicAccessBlock"]
  resources = ["*"]
}

可能遗漏的配置点

  • S3桶Bucket Policy限制:检查目标S3桶的Bucket Policy,确认存在允许MWAA执行角色调用s3:HeadObject的语句,且没有优先级更高的Deny语句拦截请求。例如,若桶策略设置了仅允许特定IP或账号访问,需确保MWAA执行角色符合条件。
  • KMS加密权限(若启用):如果目标S3桶启用了SSE-KMS加密,执行角色需要额外添加kms:Decrypt权限(对应加密所用的KMS密钥ARN),因为HeadObject操作需要读取加密对象的元数据,会触发KMS解密操作。
  • AWS组织SCP限制:若账号属于AWS组织,检查服务控制策略(SCP)是否存在限制s3:HeadObject操作的规则,确保组织层面未禁止该权限。
  • 角色权限边界(Permission Boundary):确认MWAA执行角色未被附加权限边界,或权限边界允许s3:HeadObject和相关操作。
  • 文件路径准确性:虽然错误是403而非404,但仍需确认bucket_key是否完全匹配文件的实际路径(例如是否包含子目录前缀)。

关于自定义aws_conn_id的说明

默认情况下,S3KeySensor会使用Airflow的aws_default连接,MWAA会自动配置该连接使用执行角色的权限,无需额外指定自定义aws_conn_id。除非你修改过aws_default的配置,或需要使用其他IAM身份,否则不需要自定义该参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 15:42:38