作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我关注 AWS Walkthrough on setting up AWS Lambda从 S3 存储桶生成缩略图:当 sourcebucket
接收到一个新对象,它调用一个 lambda 来转换该对象并将其缩略图保存到 destination bucket
.一切都适用于没有为对象指定 ACL 的默认代码片段,在这种情况下,S3 会自动将其设置为 private
.但是,当我修改代码并将对象的 ACL 设置为 'public-read'
, Lambda 未能将对象保存到目标存储桶并抛出 'Access Denied'
错误。
s3.putObject({
Bucket: dstBucket,
Key: dstKey,
Body: data,
ContentType: 'image/jpeg',
ACL: 'public-read',
StorageClass: style.storageClass})
adminuser
向 lambda 添加了以下访问策略:
aws lambda add-permission \
--function-name CreateThumbnail \
--region eu-west-1 \
--statement-id some-unique-id \
--action "lambda:InvokeFunction" \
--principal s3.amazonaws.com \
--source-arn arn:aws:s3:::sourcebucket \
--source-account bucket-owner-account-id \
--profile adminuser
AdministratorAccess
组的一部分允许对所有资源执行所有操作:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
]
}
AWSLambdaExecute
授予其对存储桶执行所有必要操作的权限的角色:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:*"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::*"
}
]
}
最佳答案
看起来像 AWSLambdaExecute
本教程建议附加到 Lambda 的角色策略缺乏指定对象 ACL 的权限。为了解决这个问题,我附加了一个额外的内联策略,授予 lambda "s3:PutObjectAcl"
的权限。 Action 也:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObjectAcl"
],
"Resource": "arn:aws:s3:::*"
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": "arn:aws:s3:::*"
}
]
}
关于amazon-web-services - 使用 ACL 'Access Denied' 保存到 s3 时,具有 AdministratorAccess 的 AWS Lambda 抛出 'public-read',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34049794/
我关注 AWS Walkthrough on setting up AWS Lambda从 S3 存储桶生成缩略图:当 sourcebucket接收到一个新对象,它调用一个 lambda 来转换该对象
我是一名优秀的程序员,十分优秀!