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 操作时发生错误(访问被拒绝)