rob*_*ur1 6 ubuntu amazon-ec2 amazon-web-services amazon-iam
我正在使用具有自定义 Ubuntu 16.04 AMI 的 EC2 实例。
我正在尝试迁移到使用附加到实例的 IAM 角色来访问 S3。
我创建了一个具有以下权限的简单测试角色:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
以及以下政策文件:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
Run Code Online (Sandbox Code Playgroud)
它已附加到已运行的 EC2 实例。
在 EC2 实例上,我以几种不同的方式测试了 CLI,并且得到了令人惊讶的结果。
ubuntu@machine:~$ aws s3 ls
Unable to locate credentials. You can configure credentials by running "aws configure".
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
然后我去检查元数据端点以确认角色已附加,但遇到了一些问题。我怀疑这是问题的根源,但我以前从未见过这种情况 - 无法访问元数据端点。有谁知道什么可能会阻止此操作或为什么此操作不可用?
ubuntu@machine:~$ curl http://169.254.169.254/latest/meta-data/
curl: (7) Couldn't connect to server
Run Code Online (Sandbox Code Playgroud)
非常感谢
只是为了关闭此循环并帮助其他可能遇到此问题的人。
这似乎是一个被 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 角色变得可用。
| 归档时间: |
|
| 查看次数: |
6119 次 |
| 最近记录: |