AWS で既存のリソースのラベルを変更する

AWS で既存のリソースのラベルを変更する

Key-Valueペアに基づいて既存のEC2リソースのAWSタグを変更しようとしています。キーと値のペアが一致した場合は、ラベルを追加/変更してください。 AWS CLI を使用してこれを行います。

宣言-a インスタンスインスタンス=$(aws ec2 説明インスタンス | jq ".Reservations[].Instances[].Tags[] | [.Key, .Value]")

これにより、[ "Name"、 "TestCLI2" ] [ "Instance", "Trial2" ] [ "Instance", "Trial1" ] [ "Name", "TestCLI1" ] で出力が生成されます。

すべてのインスタンスを Key="Instance" および Value=["Trial1", "Trial2] と一致させ、Trial3 に変更する必要があります。

ループを使用しようとしていますが、このJSONを解析してifステートメントを確認する方法を進めることはできません。

for i in "${instance[@]}" # すべてのインスタンスを繰り返します。

ベストアンサー1

このコマンドを使用して、タグに一致するすべてのec2インスタンスをaws describe取得できます。key="Instance"value=["Trial1", "Trial2"]

$ aws ec2 describe-instances --region <yourRegion>   \
   --query Reservations[*].Instances[*].[InstanceId] \
   --filters "Name=tag:<tagKey>,Values=<tagValue>" --output text

上記のコマンドは、フィルタパラメータと一致するインスタンスのインスタンスIDを提供します。次の手順では、リソースIDを次のコマンドに渡すことができます。

$ aws ec2 create-tags --resources <id1> <id2> ... \
    --tags 'Key=<tagKey>,Value=<newValue>'

Create-tagsラベルがない場合、コマンドは新しいラベルを作成します。その場合、古いタグ値を新しいタグ値で更新します。

を使用すると、xargsこれら2つのコマンドを1行にまとめることができます。

$ aws ec2 describe-instances --region <yourRegion> \
 --query Reservations[*].Instances[*].[InstanceId] \
 --filters "Name=tag:<tagKey>,Values=<tagValue>"   \
 --output text| xargs -n1 -I@ aws ec2 create-tags  \
    --resources @ --tags 'Key=<tagKey>,Value=<newValue>'

詳細は:

おすすめ記事