如何在用户数据中获取AWS Instance标签?

时间:2014-05-09 08:00:24

标签: powershell amazon-web-services amazon-ec2 user-data aws-powershell

我使用aws ec2 userdata和windows powershell脚本。我需要实例引导。我的想法是:

  • EC2实例代码adds.It的主要名称"版本",它的价值" 1.0.0.158-branchname"

我试图在userdata中获取版本标记值。我检查了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/

2 个答案:

答案 0 :(得分:8)

我解决了,我的问题是使用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 :(得分:2)

在我遇到类似问题时,只是做了一些澄清......

如果Instance具有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)