15

阅读有关如何在已启动的 EC2 实例中使用临时 AWS 凭证/ many /资源,我似乎无法运行一个极其简单的 POC。

期望:

  1. 启动 EC2 实例
  2. SSH 进入
  3. 从私有 S3 存储桶中提取一段静态内容

脚步:

  1. 创建IAM角色
  2. EC2使用指定的上述IAM角色启动一个新实例;SSH
  3. 设置使用的凭据aws configure和(成功)填充的详细信息http://169.254.169.254/latest/meta-data/iam/security-credentials/iam-role-name
  4. 尝试使用AWS CLI直接访问文件

IAM角色:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject"
      ],
      "Resource": "arn:aws:s3:::bucket-name/file.png"
    }
  ]
}

当我使用AWS CLI访问文件时,会引发此错误:

A client error (Forbidden) occurred when calling the HeadObject operation: Forbidden
Completed 1 part(s) with ... file(s) remaining

我错过了哪一步?

4

7 回答 7

14

为了将来参考,问题在于我如何调用AWS CLI; 以前我正在运行:

aws configure

...并提供在自动生成的角色配置文件中找到的详细信息。

一旦我简单地允许它找到自己的临时凭证并手动指定唯一的其他必需参数(区域):

aws s3 cp s3://bucket-name/file.png file.png --region us-east-1

...文件拉得很好。希望这会帮助将来的人!

于 2014-03-08T00:21:04.457 回答
12

希望这可能会帮助其他一些在这里登陆的谷歌员工。

A client error (403) occurred when calling the HeadObject operation: Forbidden

如果您的系统时钟太远,也可能导致错误。我过去 12 小时得到了这个错误。将时钟设置在真实时间的一分钟内,错误就消失了。

于 2015-02-12T21:30:32.417 回答
8

根据使用 Amazon IAM 授予对单个 S3 存储桶的访问权限,IAM 策略可能需要应用于两个资源:

  1. 正确的存储桶(例如“arn:aws:s3:::4ormat-knowledge-base”)
  2. 桶内的所有对象(例如“arn:aws:s3:::4ormat-knowledge-base/*”)

又是一条绊线。该死!

于 2015-02-24T19:58:15.850 回答
3

我刚刚收到此错误,因为我有旧版本的 awscli:

破碎的:

$ aws --version aws-cli/1.2.9 Python/3.4.0 Linux/3.13.0-36-generic

作品:

$ aws --version aws-cli/1.5.4 Python/3.4.0 Linux/3.13.0-36-generic

于 2014-10-31T11:22:37.583 回答
2

如果存储桶中不存在密钥,您也会收到此错误。

仔细检查密钥——我有一个脚本,当它将项目发布到存储桶中时,它在密钥的开头添加了一个额外的斜杠。所以这:

aws s3 cp --region us-east-1 s3://bucketname/path/to/file /tmp/filename

失败并显示“调用 HeadObject 操作时发生客户端错误(禁止):禁止。”

但是这个:

aws s3 cp --region us-east-1 s3://bucketname//path/to/file /tmp/filename

工作得很好。根本不是权限问题,只是愚蠢的密钥创建。

于 2014-05-12T17:54:26.543 回答
1

我遇到此错误是因为我没有将策略附加到我的 IAM 用户。

它应该是什么样子

于 2015-05-08T13:39:15.333 回答
0

tl;博士:通配符文件通配在 s3cmd 中对我来说效果更好。

就像 aws-cli 一样酷——对于我的一次性 S3 文件操作问题,它并没有像我希望的那样立即起作用——我最终安装和使用了 s3cmd。

无论我在概念上想象什么语法和幕后工作,s3cmd 都更直观,更符合我的成见。

也许这不是你来这里的答案,但它对我有用。

于 2017-03-08T20:06:31.567 回答