![](/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.