【发布时间】:2021-07-19 10:22:28
【问题描述】:
使用无服务器框架。我正在使用 python 在 lambda 中进行一些图像处理,并将结果放入 S3 存储桶中,以便通过 URL 公开访问。
我花了几个小时阅读我能找到的每个堆栈溢出答案、示例代码等,以展示这是如何完成的。但没有骰子。我根本无法创建有效的最低权限。对于这个python代码:
with open("/tmp/" + filename, "rb") as f:
s3_client.upload_fileobj(f, bucket_name, filename)
这个大锤子可以很好地获得权限:
iamRoleStatements:
- Effect: 'Allow'
Action:
- 's3:*'
Resource: "arn:aws:s3:::*"
但我无法使用激光聚焦的最小权限使其工作:
iamRoleStatements:
- Effect: 'Allow'
Action:
- 's3:PutObject'
- 's3:PutObjectAcl'
- 's3:GetObject'
- 's3:GetObjectAcl'
Resource: "arn:aws:s3:::mah-bucket/*"
- Effect: 'Allow'
Action:
- 's3:ListBucket'
Resource: "arn:aws:s3:::mah-bucket"
堆栈跟踪没有帮助。 AccessDenied 仅此而已。任何地方似乎都没有有用的日志。是否有什么明显的我做错了,或者在某个地方我可以看到有关写入失败的良好信息?
【问题讨论】:
标签: python amazon-s3 aws-lambda amazon-iam serverless-framework