Как я могу получить теги экземпляра 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)
Другие вопросы по тегам