amazon-web-services - S3:即使附加了 AmazonS3FullAccess,访问也被拒绝
问题描述
调用此 lambda 函数时:
var params = {
Bucket: sourceBucket,
Key: sourceKey,
ACL: 'public-read-write'
};
s3.putObjectAcl(params, function(err, data){
if (err){
callback(err)
}
})
我为这个 lambda 函数尝试了 2 个执行角色,但仍然遇到上述错误:
- 附加了 AmazonS3FullAccess 策略的 IAM 角色。
- 具有以下策略的 IAM 角色:
- AWSLambda 执行策略
- 此内联政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObjectVersionAcl",
"s3:PutObjectAcl"
],
"Resource": "arn:aws:s3:::my-bucket-name/*"
}
]
}
我可以知道我做错了什么或错过了什么吗?谢谢!
解决方案
jarmod 在评论中回答了这个问题:
禁用存储桶中的“阻止公共访问”设置。
为什么?
“如果在启用 S3 块公共访问的情况下将对象写入 AWS 账户或 S3 存储桶,并且该对象通过 ACL 或策略指定任何类型的公共权限,则这些公共权限将被阻止。”
推荐阅读
- c - 如何检查mmap从磁盘读取的字节数
- c# - 在身份验证失败时返回自定义状态码 .Net Core
- android - 带 Hilt 的动态功能模块
- cakephp - 从不同的控制器访问公共函数内的变量
- graphql - 如何使用 graphql-constraint-directive 在 graphQL 模式中应用验证
- react-native - 在 StackNavigator 中更改特定屏幕的动画方向?
- typescript - Prisma 迁移需要默认值吗?
- android - 我可以在振铃流上播放颤振的声音吗?
- python - FileNotFoundError:没有这样的文件或目录。(Python_pygame)
- google-sheets - 使用 COUNTIF 排除同一列中的重复项