簡體   English   中英

在java中,如何讓Amazon EC2實例查看自己的標簽?

[英]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種亞馬遜服務。

  1. 首先,您需要檢索實例ID。 這可以通過從您的實例中點擊URL來實現:

    http://169.254.169.254/latest/meta-data/instance-id

  2. 獲得資源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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM