皆さん、私は実行中のインスタンスのタグを環境変数としてエクスポートするスクリプトを書いています。自動スケーリンググループの問題は、これらのタグがインスタンスで使用できないことです。
Api/aws cliコマンドを使用して、インスタンスがどの自動スケーリンググループに属するかをどのようにして知るのですか?スクリプトでインスタンスタグを使用する必要がありますが、使用できません。提案?
ありがとう!
Api/aws cliコマンドを使用して、インスタンスがどの自動スケーリンググループに属するかをどのようにして知るのですか?
autoscaling describe-auto-scaling-instances
コマンドとオプション--instance-ids
、 このような:
aws autoscaling describe-auto-scaling-instances --instance-ids="i-zzxxccvv"
自動スケーリンググループの問題は、これらのタグがインスタンスで使用できないことです。 [...]スクリプトでインスタンスタグを使用する必要がありますが、使用できません。提案?
インスタンスが属する自動スケーリンググループのタグを取得したいので、これを解釈していますか?上記のコマンドから返されたAutoScalingGroupName
を使用すると、次のコマンドを使用できます。
aws autoscaling describe-tags --filters Name=auto-scaling-group,Values=name-of-the-auto-scaling-group-here
インスタンスの自動スケーリンググループを見つける最も簡単な方法は、タグを調べることです。自動スケーリンググループ内のインスタンスには、グループ名を含むaws:autoscaling:groupName
という名前のタグがあります。次のコマンドを使用して、そのタグを取得できます。
aws ec2 describe-tags --filters "Name=resource-id,Values=${INSTANCE}" "Name=key,Values=aws:autoscaling:groupName"
次に、Bazzeの説明に従ってタグを取得できます。
これに対する代替ソリューションは、タグを自動スケーリンググループからインスタンスに伝播することです。
Cloudformationを使用してASGを作成する場合は、伝達する各タグに"PropagateAtLaunch": "true"
を設定します( Aws Cloud Formation Docs を参照)。
グループを手動で作成する場合は、各タグの[新しいインスタンスにタグを付ける]ボックスをオンにしてください。
これを完了すると、タグがインスタンスにコピーされ、describe tagsコマンドを使用してインスタンスのタグを検査できます。
aws ec2 describe-tags --filters "Name=resource-id,Values=${INSTANCE}"
Aws cliツールの出力を処理するのにjq
役立つと思います。たとえば、次のコマンドは、JSONからkey=value
リストを生成します。
aws ec2 describe-tags --filters "Name=resource-id,Values=${INSTANCE}" | jq -r '.Tags[] | @text "\(.Key)=\(.Value)"'
すべてをまとめるには:
INSTANCE_ID=`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id`
ASG_NAME=`aws ec2 describe-tags --filters "Name=resource-id,Values=$INSTANCE_ID" --region us-east-2 | jq '.Tags[] | select(.["Key"] | contains("aws:autoscaling:groupName")) | .Value'`
ASG_NAME=`echo $ASG_NAME | tr -d '"'`
echo $ASG_NAME
と表示されるはずです。