2

我使用aws ec2 userdata和windows powershell腳本。我需要實例引導。我的想法是:如何獲取用戶數據中的AWS實例標籤?

  • EC2實例標籤adds.It的鍵名「版本」,它的價值「1.0.0.158-BRANCHNAME」

我試圖在用戶數據得到的版本標籤值。我檢查了aws http api。它不能返回標籤。我寫了簡單的powershell腳本:

$instanceId = (New-Object System.Net.WebClient).DownloadString("http://169.254.169.254/latest/meta-data/instance-id") 
aws ec2 describe-tags --filters $filter --query 'Tags[*]' 

我可以用aws http api獲取實例ID。我無法獲取實例標籤,因爲AWS ec2 userdata無法啓動「aws.exe」。

該腳本是正確的 - 它是在實例啓動之前手動運行的。

注: 「AWS」 是 「aws.exe」(https://aws.amazon.com/cli/

回答

6

我解決這個問題,我的問題是使用AWS CLI。我使用powershell API並修復它。

$instanceId = (New-Object System.Net.WebClient).DownloadString("http://169.254.169.254/latest/meta-data/instance-id") 
$versionTag = Get-EC2Tag | ` Where-Object {$_.ResourceId -eq $instanceId -and $_.Key -eq 'Version'} 
1

只是一些澄清,因爲我正面臨着類似的問題..

如果實例與EC2讀訪問的IAM角色..

# My need to use AWSDefaults cmdlet to get temp credentials from STS 
Initialize-AWSDefaults 
$instanceId = irm -uri http://169.254.169.254/latest/metadata/instance-id 
$instance = (Get-Instance -InstanceId $instanceId).Instances[0] 
$instanceName = ($instance.Tags | ? { $_.Key -eq "Name"} | select -expand Value) 
相關問題