AWS에서 기존 리소스의 레이블 변경

AWS에서 기존 리소스의 레이블 변경

키-값 페어를 기반으로 기존 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이 두 명령을 한 줄로 결합할 수 있습니다.

$ 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>'

자세한 내용은:

관련 정보