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

AWS CLI可列出S3存储桶但Python Lambda访问被拒绝

问题诊断与修复方案

核心问题:IAM策略未附加到Lambda角色

你已经创建了Lambda的IAM角色和对应的S3访问策略,但缺少将策略附加到角色的Terraform资源,导致Lambda执行时没有权限调用S3的ListObjects操作。

修复步骤

在你的Terraform配置中添加aws_iam_role_policy_attachment资源,将S3访问策略绑定到Lambda角色:

resource "aws_iam_role_policy_attachment" "lambda_s3_access" {
  role       = aws_iam_role.lambda.name
  policy_arn = aws_iam_policy.lambda.arn
}

添加后重新执行terraform apply更新基础设施。

额外排查点

如果修复后仍有问题,可检查以下内容:

  • S3桶策略:确认桶没有设置拒绝ListBucket操作的自定义桶策略(当前配置的acl = "private"默认不会有额外限制)。
  • Lambda执行环境:如果Lambda部署在VPC内,需要配置S3 VPC端点,否则Lambda无法访问S3服务。
  • 资源名称一致性:确保Terraform中引用的桶名bucket-name和Lambda代码中使用的完全一致,无拼写错误。

验证方法

修复后,可通过CLI查看Lambda角色的权限是否生效:

aws iam list-attached-role-policies --role-name <你的Lambda角色名>

确认输出中包含你创建的S3访问策略,再在AWS控制台重新测试Lambda函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 23:05:24