amazon-web-services - IAM 角色附加到实例 "Unable to Locate Credentials"- 无法命中元数据端点

标签 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

非常感谢

最佳答案

只是为了解决这个问题并帮助其他可能遇到此问题的人。

这似乎是一条被 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 角色变得可用。

关于amazon-web-services - IAM 角色附加到实例 "Unable to Locate Credentials"- 无法命中元数据端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57710824/

相关文章:

ssl - AWS Route 53 重定向到状态页面

amazon-web-services - 使用 aws-load-balancer-backend-protocol : "https" 时,nginx-ingress 不适用于 AWS ELB

amazon-web-services - 如果没有通知,是否有 AWS/Pagerduty 服务会提醒我

Ubuntu 14.04 上的 PYTHONPATH 命令

linux - 在 Ubuntu Linux 上安装 Qt Symbian 构建目标

python - 如何通过 boto3 在 EC2 实例上运行 python 脚本

java - 使用aws sdk for java从AWS服务器获取现有 key 对

amazon-web-services - AMI的增量是否像EBS快照一样?

linux - 尝试在 Ubuntu Linux debian 中打包 Unity 游戏

java - 如何从 Amazon EC2 客户端删除 DEBUG 日志记录