如何解锁或删除无意中被存储桶策略锁定的 AWS S3 存储桶?

Jas*_*r33 5 amazon-s3 amazon-web-services aws-cli

我是 AWS 账户所有者,管理员(IAM 和 root 密码 - 不推荐我知道,但有一些依赖于 root pw 的遗留应用程序)。我最近添加了一个存储桶策略,该策略随后使存储桶锁定为我无法访问:

$ aws s3 rb s3://<my-bucket> --force
A client error (AccessDenied) occurred when calling the ListObjects operation:   Access Denied
Completed 1 part(s) with ... file(s) remaining
remove_bucket failed: s3://<my-bucket>/ A client error (AccessDenied) occurred when calling the DeleteBucket operation: Access Denied
Run Code Online (Sandbox Code Playgroud)

我已经尝试了 CLI 和 AWS S3 控制台,但只收到错误: Sorry! You do not have permissions to view this bucket.

这个桶完全是空的,这让我松了一口气,但我需要使用这个特殊的名字,但我无法用它做任何事情。

我希望我不是唯一经历过这种困境的人。

(PS - 我会发布我使用的 EXACT 存储桶策略,但我使用控制台创建了它,如果我怀疑输入了错误的某些部分,我将无法为您复制/粘贴它...)

亲切的问候,杰夫。

lon*_*556 7

直接从 AWS 支持:

你好,

G** 这里有 AWS Support。我了解您的 S3 存储桶“s3-bucket-name”的存储桶策略会阻止访问或删除存储桶。您可以通过以下几种方法删除存储桶策略,然后删除存储桶本身:

  1. 使用根凭证登录 AWS S3 控制台。请注意,root 帐户不同于具有“管理员访问权限”[1] 的帐户。root 账户应该有权修改/删除此存储桶策略。不幸的是,我注意到这是一个变化无常的选项,有时只适用。或者
  2. (选项一直有效)通过 AWS cli 删除存储桶策略如下(Linux 和 Windows 选项):

通过 Linux: $ export AWS_DEFAULT_REGION= us-east-1 $ export AWS_ACCESS_KEY_ID="ROOT_KEY_ID" $ export AWS_SECRET_ACCESS_KEY="ROOT_SECRET_KEY" $ aws s3api delete-bucket-policy --bucket s3-bucket-name

通过 Windows:设置 AWS_DEFAULT_REGION= us-east-1 设置 AWS_ACCESS_KEY_ID="ROOT_KEY_ID" 设置 AWS_SECRET_ACCESS_KEY="ROOT_SECRET_KEY" aws s3api delete-bucket-policy --bucket s3-bucket-name

如果是这样,请在设置根帐户凭据后提供以下输出: $ aws s3api delete-bucket-policy --bucket s3-bucket-name --debug

请注意,这些都使用 root 帐户凭据。请尝试这些方法,如果您有任何问题,请告诉我。我希望这些信息有帮助。如有任何其他问题或疑虑,请随时与我联系。

[1] 根账户与 IAM 用户 - http://docs.aws.amazon.com/es_es/general/latest/gr/root-vs-iam.html

最好的问候,G**

选项 2 对我有用。

干杯!

  • lonewarrior556 选项 2 也对我有用(完全跳过选项 1) - 非常感谢!这也适用于 macOS Sierra。 (2认同)
  • 选项2对我来说是成功的,谢谢。不过,我最终不得不从 EC2 实例执行此操作,但它似乎不喜欢我从 VPC 外部执行此操作。完成后,不要忘记删除您的根密钥/秘密! (2认同)