具有IAM角色的AWS EC2的静态内容

jte*_*rry 15 amazon-s3 amazon-ec2 amazon-web-services amazon-iam aws-cli

通过阅读//资源如何利用在推出EC2实例临时AWS凭据,我似乎无法得到一个非常简单的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"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

当我使用它AWS CLI来访问该文件时,抛出此错误:

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

我错过了哪一步?

jte*_*rry 14

为了将来参考,问题在于我如何称呼AWS CLI; 以前我跑步:

aws configure
Run Code Online (Sandbox Code Playgroud)

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

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

aws s3 cp s3://bucket-name/file.png file.png --region us-east-1
Run Code Online (Sandbox Code Playgroud)

......文件拉得很好.希望这将有助于将来的某个人!

  • 谢谢你.我在6个不同的地区使用它,只有一个必须添加` - region`Whatever,working! (2认同)

小智 12

希望这可能有助于其他一些谷歌人来到这里.

A client error (403) occurred when calling the HeadObject operation: Forbidden
Run Code Online (Sandbox Code Playgroud)

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


Dav*_*fer 8

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

  1. 适当的桶(例如"arn:aws:s3 ::: 4ormat-knowledge-base")
  2. 桶中的所有对象(例如"arn:aws:s3 ::: 4ormat-knowledge-base/*")

又一个绊网.该死的!