Closed2

終了保護が無効のEC2インスタンスを検出するスクリプト

Junichi HashimotoJunichi Hashimoto
echo -e "Name,TerminationProtection"

for instance_id in $(aws ec2 describe-instances \
  --region ap-northeast-1 \
  --query 'Reservations[*].Instances[*].InstanceId' \
  --output text); do

  # Nameタグ取得
  name=$(aws ec2 describe-tags \
    --region ap-northeast-1 \
    --filters "Name=resource-id,Values=$instance_id" "Name=key,Values=Name" \
    --query 'Tags[0].Value' \
    --output text)

  # 終了保護の状態取得
  protection=$(aws ec2 describe-instance-attribute \
    --region ap-northeast-1 \
    --instance-id "$instance_id" \
    --attribute disableApiTermination \
    --query 'DisableApiTermination.Value' \
    --output text)

  if [ "$protection" = "False" ]; then
    # 赤色で警告
    echo -e "\033[31m$name,⚠️ 無効(False)\033[0m"
  else
    echo "$name,有効(True)"
  fi
done
Junichi HashimotoJunichi Hashimoto

出力サンプル。(コンソールでは終了保護が無効の場合は赤く出力される)

ec2-ins-foo,有効(True)
ec2-ins-bar,⚠️ 無効(False)
このスクラップは4ヶ月前にクローズされました