【问题标题】:An error occurred (AccessDenied) when calling the PutObject operation: Access Denied python调用 PutObject 操作时发生错误(AccessDenied):Access Denied python
【发布时间】: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 实例。

标签: python amazon-s3 boto3


【解决方案1】:

要成功连接 AWS,我必须将凭证传递给 s3 资源

s3 = boto3.resource('s3', aws_access_key_id='key', aws_secret_access_key='key')

【讨论】:

    猜你喜欢
    • 2021-07-28
    • 2020-05-06
    • 2017-09-28
    • 2023-01-29
    • 2018-07-12
    • 2018-12-09
    • 2020-04-02
    • 1970-01-01
    • 2022-11-08
    相关资源
    最近更新 更多