AWS S3策略出现Invalid principal in policy错误,该如何修复?
修复S3桶策略中「Invalid principal in policy」错误的方法
错误原因
你在S3桶策略里把Lambda函数的ARN直接填进了Principal.AWS字段,但S3桶策略的Principal只能指定**IAM实体(用户、角色、组)**的ARN,Lambda函数本身不是IAM实体,它是通过关联的IAM执行角色来获取权限的,所以直接用函数ARN会触发无效主体的错误。
修复步骤
获取Lambda执行角色的ARN
登录AWS控制台,打开Lambda服务,找到你的statixxdata函数:- 切换到「配置」标签页
- 在左侧菜单选择「权限」
- 在「执行角色」部分复制对应的ARN(格式类似
arn:aws:iam::账号ID:role/角色名称)
更新S3桶策略
把原策略中Principal.AWS的值替换成刚才复制的执行角色ARN,同时建议补充桶内对象的资源路径(否则只能操作桶本身,无法读写桶内文件),修改后的示例如下:{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement2024", "Principal": { "AWS": "arn:aws:iam::053297098999:role/你的Lambda执行角色名称" }, "Effect": "Allow", "Action": [ // 建议根据实际需求替换为具体权限,比如s3:GetObject、s3:PutObject,避免过度授权 "s3:*" ], "Resource": [ "arn:aws:s3:::ixxxx2-statixx-data", "arn:aws:s3:::ixxxx2-statixx-data/*" ] } ] }验证配置
保存更新后的桶策略,然后测试Lambda函数是否能正常访问S3桶。
内容的提问来源于stack exchange,提问作者Đỗ Như Vỹ
相关产品推荐
相关产品推荐

