S3:调用GetObject操作时发生错误(AccessDenied):Access Denied

Posted

技术标签:

【中文标题】S3:调用GetObject操作时发生错误(AccessDenied):Access Denied【英文标题】:S3: An error occurred (AccessDenied) when calling the GetObject operation: Access Denied 【发布时间】:2017-09-28 11:59:23 【问题描述】:

使用命令 aws configure 配置 AWSCLI 后。我正在尝试使用以下命令将文件从 S3 存储桶下载到本地文件夹测试

aws s3 sync s3://sourceBucket  ./test --delete

但它会抛出以下错误消息

download failed: s3://sourceBucket/jobs/Test/1/slider-test-0.0.1-SNAPSHOT.war to test/jobs/Test/1/slider-test-0.0.1-SNAPSHOT.war An error occurred (AccessDenied) when calling the GetObject operation: Access Denied
download failed: s3://sourceBucket/jobs/Test/2/slider-test-0.0.1-SNAPSHOT.war to test/jobs/Test/2/slider-test-0.0.1-SNAPSHOT.war An error occurred (AccessDenied) when calling the GetObject operation: Access Denied

sourceBucket 具有以下权限

sourceBucket permissions Image - clickhere

当我使用此命令检查 sourceBucket 中的对象列表时

aws s3api list-objects --bucket sourceBucket --query 'Contents[].Key: Key, Size: Size'

下面是它的输出

[
    
        "Key": "jobs/Test/1/slider-test-0.0.1-SNAPSHOT.war", 
        "Size": 2546325
    ,
    
        "Key": "jobs/Test/2/slider-test-0.0.1-SNAPSHOT.war", 
        "Size": 3571598
    
]

谁能告诉我如何解决这个问题,我需要将所有对象从 s3 sourceBucket 下载到本地文件夹 test。

谢谢。

【问题讨论】:

您还有一个存储桶策略。任何适用的deny 都会覆盖复选框。 它没有存储桶策略。 点击“编辑存储桶策略”确定? 我没有向bucket添加任何策略,如果我必须添加,你能告诉我要添加什么策略,以便它可以将所有数据从sourceBucket检索到本地文件夹test。 docs.aws.amazon.com/AmazonS3/latest/dev/… 和 docs.aws.amazon.com/AmazonS3/latest/dev/walkthrough1.html 【参考方案1】:

如果您使用 KMS 加密您的 S3 文件,还要确保 IAM 用户/角色有权使用适当的密钥来解密文件。在您的KMS dashboard 中,单击“客户管理的密钥”,然后单击用于 S3 存储桶的特定密钥。然后,您需要将适当的帐户/角色添加到密钥策略中。更多内容见:https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam

【讨论】:

您的回答帮了大忙!我一直在查看 S3 权限并忘记检查 kms 权限。 是的,这就是我的灵感——将来会使用 AWS 托管的 KMS 密钥。 在 IAM 控制面板中找不到“加密密钥” @LeninRajRajasekaran 他们将此选项移至 KMS 控制台。 console.aws.amazon.com/kms 从那里您可以查看您的“客户管理的密钥”,然后根据需要更新“关键用户”。

以上是关于S3:调用GetObject操作时发生错误(AccessDenied):Access Denied的主要内容,如果未能解决你的问题,请参考以下文章

通过 Lambda 到 GetObject 的 Cognito 身份验证角色 - 调用 GetObject 操作时发生错误 (AccessDenied):访问被拒绝

s3.getObject()。createReadStream():如何捕获错误?

在我的S3存储桶上执行getObject操作时,如何触发Lambda函数?

AWS BOTO3 S3 python - 调用 HeadObject 操作时发生错误(404):未找到

AWS CLI S3:使用终端在本地复制文件:致命错误:调用 HeadObject 操作时发生错误(404)

[Django][AWS S3] botocore.exceptions.clienterror 调用 PutObject 操作时发生错误(访问被拒绝)