【发布时间】:2019-07-12 23:40:16
【问题描述】:
我正在尝试授予我的 AWS 存储桶上传文件的权限。我尝试将公共访问更新为公共,并更改我的存储桶策略。我有点卡住了,我不确定如何处理这个问题。
存储桶策略:
"Version": "2012-10-17",
"Id": "PolicyID",
"Statement": [
{
"Sid": "SID",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::id:user1"
},
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": "arn:aws:s3:::bucket/*"
},
{
"Sid": "SID",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::id:user2"
},
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": "arn:aws:s3:::bucket/*"
}
]
}
更新:我可以使用 python 命令控制台上传文件,但不能在我的源代码中。这是我所拥有的
s3.boto3.resource('s3')
s3.meta.client.upload_file('file.csv', 'bucket', 'file.csv')
我也试过了:
s3.boto.resource('s3')
s3.Object('bucket').upload_fileobj(object)
【问题讨论】:
-
您正在从执行 python 命令的同一个地方尝试源代码?
-
是的,我使用 Flask 作为框架。在命令行中使用和不使用virualenv 可以工作
-
是否在 EC2 实例中?检查您是否已将 IAM 角色分配给允许完全访问 S3 的实例
-
你从哪里运行这段代码?
-
@conde 这是一个 s3 实例。