附加到实例“无法定位凭据”的IAM角色-无法访问元数据终结点

时间:2019-08-29 13:02:10

标签: amazon-web-services ubuntu amazon-ec2 amazon-iam

我正在使用带有自定义Ubuntu 16.04 AMI的EC2实例。

我正在尝试使用附加到实例的IAM角色进行迁移以访问S3。

我已经创建了具有以下权限的简单测试角色:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": "*"
        }
    ]
}

和以下政策文件:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

它已附加到已经运行的EC2实例上。

在EC2实例上,我以几种不同的方式测试了CLI,并且得到了令人惊讶的结果。

ubuntu@machine:~$ aws s3 ls
Unable to locate credentials. You can configure credentials by running "aws configure".
ubuntu@machine:~$ aws configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key                <not set>             None    None
secret_key                <not set>             None    None
    region                <not set>             None    None

然后我去检查元数据端点以确认角色已附加,但是遇到了一些问题。我的怀疑是这是问题的根源,但我之前从未见过-无法访问元数据端点。有人知道什么可能阻止了此操作,或者为什么不可用?

ubuntu@machine:~$ curl http://169.254.169.254/latest/meta-data/
curl: (7) Couldn't connect to server

非常感谢

1 个答案:

答案 0 :(得分:0)

只需关闭此循环,并帮助可能遇到此问题的其他人即可。

这似乎是被包cloud-init阻塞的IP路由

https://github.com/cloud-init/cloud-init/blob/master/cloudinit/config/cc_disable_ec2_metadata.py#L36

运行sudo ip route del prohibit 169.254.169.254允许访问元数据终结点,并且附加的IAM角色变得可用。