这不是“使用API调用获取我的AWS凭据”这一问题的重复,因为我特别询问亚马逊在他们给出的示例中的含义。
我在这里看:
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html
我看到了这一点:
Warning
If you use services that use instance metadata with IAM roles, ensure that you don't expose your credentials when the services make HTTP calls on your behalf. The types of services that could expose your credentials include HTTP proxies, HTML/CSS validator services, and XML processors that support XML inclusion.
The following command retrieves the security credentials for an IAM role named s3access.
$ curl http://169.254.169.254/latest/meta-data/iam/security-credentials/s3access
此IP地址来自哪里?什么是169.254.169.254?它不能是我的服务器,因为我没有在端口80上运行软件,也不会在我的服务器上授予Amazon别名。
但我确实运行了上述内容,它只是超时了。因此,IP地址169.254.169.254不是Amazon正在运行的服务。那是什么?
有人理解亚马逊提供的这个例子吗?
答案 0 :(得分:2)
169.254.169.254
是AWS元数据服务的地址。您可以从EC2服务器查询此地址以获取有关服务器的信息。可以通过这种方式获得的元数据记录在here。
你是说当你从EC2服务器运行curl
命令时它会超时吗?
答案 1 :(得分:1)
169.254位于链接本地地址空间内:https://en.wikipedia.org/wiki/Link-local_address
它通常用于很多localhost / local-subnet用例。亚马逊恰好将其元数据服务放在169.254.169.254,以便可以从EC2实例查询。
curl http://169.254.169.254/latest/meta-data
如果您的名为http://169.254.169.254/latest/meta-data/iam/security-credentials/s3access
的实例附加了IAM角色,那么完整的s3access
只会返回一些内容。