#やりたいこと
以下の赤い四角で囲まれた部分をAZごとに取得したい。
####取得した後の用途としては以下のようなコマンド
#指定したコンテナインスタンスの"Status"を"Draining"にする
aws ecs update-container-instances-state --cluster ${CLUSTERS} \
--container-instances ${CONTAINER_INSTANCE_ID} \
--status DRAINING
参考:https://docs.aws.amazon.com/cli/latest/reference/ecs/update-container-instances-state.html
#指定したコンテナインスタンスの"RunningTask"を取得
aws ecs describe-container-instances --cluster ${CLUSTERS} \
--container-instances ${CONTAINER_INSTANCE_ID} \
--query containerInstances[].runningTasksCount
参考:https://docs.aws.amazon.com/cli/latest/reference/ecs/describe-container-instances.html
#はまった点
クラスターに紐づいたコンテナインスタンスIDをAZごとに取得しようとすると以下のように出力されてしまう。
#実行コマンド
aws ecs list-container-instances \
--cluster ${CLUSTERS} \
--query containerInstanceArns[*] \
--filter "attribute:ecs.availability-zone == ${AZ}"
#出力結果
[
"arn:aws:ecs:us-west-2:************:container-instance/********-****-****-****-************",
"arn:aws:ecs:us-west-2:************:container-instance/********-****-****-****-************",
"arn:aws:ecs:us-west-2:************:container-instance/********-****-****-****-************",
"arn:aws:ecs:us-west-2:************:container-instance/********-****-****-****-************",
"arn:aws:ecs:us-west-2:************:container-instance/********-****-****-****-************"
]
取得したいのは********-****-****-****-************
となっている箇所。
リファレンスを読んでも、この箇所だけ抜き出すことができなそう。
#取得方法
しょうがないので、ださいけど以下の方法で整形して取得。
#実行コマンド
aws ecs list-container-instances --cluster ${CLUSTERS} \
--query containerInstanceArns[*] \
--filter "attribute:ecs.availability-zone == ${AZ}" | \
sed "s/.\+\///g" | sed "s/[\"|\,]//g" | \
egrep -v "\[|\]"`
#出力結果
********-****-****-****-************
********-****-****-****-************
********-****-****-****-************
********-****-****-****-************
-
sed
コマンドで/
より左を消す -
sed
コマンドで行末にあるダブルクオーテーションとカンマを消す -
egrep
コマンドで[
,]
を消す