2

J'utilise aws ec2 userdata avec des scripts Windows PowerShell. J'ai besoin d'un amorçage d'instance. Mon idée est:Comment puis-je obtenir des balises d'instance AWS dans les données utilisateur?

  • instance EC2 tag adds.It nom de la clé "Version", sa valeur "1.0.0.158-branchname"

J'ai essayé d'obtenir la valeur de la balise de version dans UserData. J'ai vérifié aws http api. Il ne peut pas retourner les tags. J'ai écrit des scripts powershell simples:

$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[*]' 

Je peux obtenir l'instance ID avec aws http api. Je ne peux pas obtenir les balises d'instance car AWS ec2 userdata ne peut pas démarrer "aws.exe".

Ce script est correct - il est exécuté manuellement avant que l'instance démarre.

Note: "aws" est "aws.exe" (https://aws.amazon.com/cli/)

Répondre

6

Je le résoudre, mon problème utilise aws cli. J'utilise powershell api et le réparer.

$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

Juste quelques éclaircissements que je faisais face problème similaire ..

Si l'instance a un rôle IAM EC2 Lire l'accès ..

# 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) 
Questions connexes