AWS ec2 describe-instances,无需使用凭据

时间:2015-07-06 17:20:06

标签: amazon-web-services amazon-ec2

是否可以在不使用凭据的情况下获取实例本地的AWS实例信息?我知道命令行工具可以做到,但它需要凭据。还有元数据命令,但那些似乎没有返回标签,这是我需要的。

我认为curl有一种方法可以获取IP并返回json,但我找不到它。

3 个答案:

答案 0 :(得分:1)

可以通过本地元数据服务直接从EC2实例中检索标签,因为元数据服务不知道标签。你有(至少)两个选择:

  1. 启动具有IAM角色的实例(或以某种方式为实例提供其他凭据),其中包括调用ec2:DescribeTags的权限,然后动态检索标记 - 您需要实例ID,而可以从元数据服务
  2. 获取
  3. 如果标签在发布时已知并且将在启动后更改,您可以将它们作为用户数据的一部分传递到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发出请求需要您自己执行身份验证。如果你决定去这里的方向是一些更多的资源来帮助你。

Signature Version 2

Describe Tags API