Je souhaite remplir certaines variables de l'instance de spot EC2, mais comme il est impossible de le faire directement en requête ponctuelle, je le fais par script de données utilisateur. Tout va bien quand je spécifie une région de manière statique, mais ce n'est pas une approche universelle. Lorsque j'essaie de détecter la région actuelle à partir des données d'utilisateur de l'instance, la variable région est toujours vide. Je le fais d'une manière suivante:La zone d'instance EC2 n'est pas renseignée dans le script de données utilisateur
#!/bin/bash
region=$(ec2-metadata -z | awk '{print $2}' | sed 's/[a-z]$//')
aws ec2 create-tags \
--region $region \
--resources `wget -q -O - http://169.254.169.254/latest/meta-data/instance-id` \
--tags Key=sometag,Value=somevalue Key=sometag,Value=somevalue
J'ai essayé de fait un délai avant que la région peuplant
/bin/sleep 30
mais cela n'a eu aucun résultat.
Cependant, lorsque je lance ce script manuellement après le démarrage, les balises sont ajoutées correctement. Que se passe-t-il?
Pourquoi tout dans tout aws-cli n'obtient pas la région par défaut du profil? J'ai aws configure
correctement configuré à l'intérieur de l'instance, mais sans clause --region
il renvoie erreur que la région n'est pas spécifiée.
Il est toujours recommandé de qualifier complètement les chemins dans les scripts shell. Lorsque vous l'exécutez manuellement, l'environnement est probablement très différent, y compris '$ PATH' ... donc vous voulez' region = $ (/ usr/bin/ec2-metadata ... '(ou n'importe où sur votre système) –