4

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

  • EC2实例标签添加。它的键名“版本”,它的值“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 用户数据无法启动“aws.exe”。

这个脚本是正确的——它是在实例启动之前手动运行的。

注意:“aws”是“aws.exe”(https://aws.amazon.com/cli/

4

2 回答 2

11

我解决了,我的问题是使用 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'}
于 2014-05-09T09:11:46.300 回答
3

只是一些澄清,因为我面临着类似的问题..

如果实例具有具有 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)
于 2017-08-22T09:09:49.637 回答