Как я могу получить теги экземпляра AWS в пользовательских данных?
Я использую пользовательские данные aws ec2 со сценариями Windows PowerShell. Мне нужен экземпляр начальной загрузки. Моя идея такова:
- Добавлен тег экземпляра EC2. Это имя ключа "Version", его значение "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[*]'
Я могу получить экземпляр Id с помощью API-интерфейса AWS. Я не могу получить теги экземпляра, потому что пользовательские данные AWS ec2 не могут запустить "aws.exe".
Этот скрипт корректен - он запускается вручную до запуска экземпляра.
Примечание. "Aws" - это "aws.exe" ( https://aws.amazon.com/cli/).
2 ответа
Я разрешаю это, моя проблема в использовании 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'}
Просто некоторые разъяснения, поскольку я столкнулся с подобной проблемой..
Если экземпляр имеет роль IAM с доступом для чтения EC2.
# 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)