配置权限后Lambda访问私有S3存储桶报AccessDenied错误咨询
可能的故障原因
- 存储桶资源策略占位符未替换:你提供的策略中
Resource字段值为arn:aws:s3:::bucket和arn:aws:s3:::bucket/*,如果实际部署时没有将bucket替换为真实存储桶名称,该策略不会生效,所有主体的访问都会被拒绝。 - KMS加密权限缺失:如果存储桶开启了KMS服务端默认加密,即使IAM身份持有
AmazonS3FullAccess策略,访问对象时还需要拥有对应KMS密钥的kms:Decrypt权限,AmazonS3FullAccess默认不包含KMS相关操作权限。 - IAM身份ARN不匹配:请核对Lambda实际使用的执行角色ARN、IAM用户ARN,是否和存储桶策略
Principal字段中配置的ARN完全一致,字符、账号ID、角色/用户名称的拼写错误都会导致权限不生效。 - 组织服务控制策略(SCP)限制:如果对应的AWS账号归属AWS Organizations组织管理,需要确认上层组织是否配置了SCP禁止对应IAM身份访问该S3存储桶,SCP的权限限制优先级高于账号内的IAM策略、存储桶资源策略。
- VPC端点策略限制:如果Lambda部署在VPC内、通过VPC端点访问S3,或是外部系统通过VPC端点访问S3,需要确认VPC端点的访问策略是否开放了对该存储桶的访问权限,VPC端点策略限制也会触发访问拒绝。
- 账号ID配置错误:存储桶策略
Principal中的三个身份ARN均用掩码隐藏了账号ID部分,如果三个身份所属的AWS账号ID填写不一致,或是和存储桶所属账号ID不匹配,也会触发访问拒绝。
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

