![](/img/trans.png)
[英]How can I get list of IAM Roles from EC2 using Java SDK or Amazon API?
[英]In java, how can I get an Amazon EC2 Instance to see its own tags?
所以我在Amazon EC2实例中运行了一个java程序。 有没有办法以编程方式获得自己的标签? 我已经尝试将一个新的AmazonEC2Client实例化为describeTags()函数,但它只给了我null。 任何帮助将不胜感激,谢谢。
编辑:为了使事情更清楚,实例将是无人工作的机器,只能进行一些计算
您应该能够通过向http://169.254.169.254/latest/meta-data/instance-id
发送请求来获取当前实例ID。 这仅适用于ec2。 有了这个,您可以访问有关该实例的大量信息。 但是,似乎没有包含标签。
您应该能够获取实例ID以及正确的身份验证以获取实例标记。 如果要在实例上运行此操作,您可能希望为访问受限的IAM用户提供访问权限,而不是在实例受到攻击时可以访问所有内容的用户。
虽然使用用户数据可能是最简单的解决方案,但OP特别询问了标记,不幸的是亚马逊并没有像现在这样容易。 但是,它可以做到。 您想要结合使用2种亚马逊服务。
首先,您需要检索实例ID。 这可以通过从您的实例中点击URL来实现:
http://169.254.169.254/latest/meta-data/instance-id
获得资源ID后,您将需要使用Amazon的EC2 API来访问标记。 既然你说你正在使用Java,我建议使用AWS SDK亚马逊 。 在此SDK中,您将找到名为describeTags
( 文档 )的方法。 您可以使用资源ID作为过滤器之一来获取实例的特定标记。 支持的过滤器是
tag key resource-id resource-type
我建议在启动时使用诸如cloud-init之类的东西进行检索,并在服务器上缓存标签,以便以后在必要时使用。
这应该可以帮助你开始......
String instanceId = EC2MetadataUtils.getInstanceId();
AmazonEC2 client = AmazonEC2ClientBuilder.standard()
.withCredentials(new DefaultAWSCredentialsProviderChain())
.build();
DescribeTagsRequest req = new DescribeTagsRequest()
.withFilters(new Filter("resource-id", Collections.singletonList(instanceId)));
DescribeTagsResult describeTagsResult = client.describeTags(req);
List<TagDescription> tags = describeTagsResult.getTags()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.