我使用aws ec2 userdata和windows powershell脚本。我需要实例引导。我的想法是:
我试图在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/)
答案 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)