是否可以在不使用凭据的情况下获取实例本地的AWS实例信息?我知道命令行工具可以做到,但它需要凭据。还有元数据命令,但那些似乎没有返回标签,这是我需要的。
我认为curl
有一种方法可以获取IP并返回json,但我找不到它。
答案 0 :(得分:1)
不可以通过本地元数据服务直接从EC2实例中检索标签,因为元数据服务不知道标签。你有(至少)两个选择:
答案 1 :(得分:0)
不幸的是,您需要凭据来检索标签。我这样做是通过创建一个只有ec2:Describe*
角色的IAM用户;然后,它可以枚举您帐户中的实例,并使用ec2-describe-tags
或类似内容检索其代码。
您可以使用元数据API检索当前实例ID,然后将其传递给ec2-describe标记以检索当前实例的标记:
ec2-describe-tags -O YOUR_IAM_KEY -W YOUR_IAM_SECRET --filter="resource-id=`curl -s http://169.254.169.254/latest/meta-data/instance-id`"
答案 2 :(得分:0)
是的,您可以获得EC2实例标记而无需凭据。您可以使用EC2 Roles / Profiles为EC2实例执行此操作。我知道这已经提到了,但我想稍微扩展一下。从技术上讲,没有凭据,你实际上并没有做任何事情。除非您只是对元数据进行查询,否则将始终使用凭据。
Boto和其他类似框架的作用是查询ec2实例元数据以获取角色的凭据。只需将最后一部分s3access
替换为个人资料/角色的名称。
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/s3access
返回
{
"Code" : "Success",
"LastUpdated" : "2012-04-26T16:39:16Z",
"Type" : "AWS-HMAC",
"AccessKeyId" : "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey" : "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"Token" : "token",
"Expiration" : "2012-04-27T22:39:16Z"
}
此响应包括发出API请求所需的访问凭据。当凭证到期时,框架将使用相同的方法请求一组新的凭证,并根据需要多次重复此过程。
我强烈建议使用框架,因为直接向REST API发出请求需要您自己执行身份验证。如果你决定去这里的方向是一些更多的资源来帮助你。