📝

[小ネタ] EC2 インスタンス起動時にユーザーデータでインスタンスを自己削除できるか

に公開

結論

できました。

検証

以下の設定で検証しました。

  • AMI: Amazon Linux 2023
  • IAM インスタンスプロファイル: AdministratorAccess 権限を付与
  • ユーザーデータ: 以下の通り
#!/bin/bash
TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" \
  -H "X-aws-ec2-metadata-token-ttl-seconds: 21600")

INSTANCE_ID=$(curl -H "X-aws-ec2-metadata-token: $TOKEN" \
  -s http://169.254.169.254/latest/meta-data/instance-id)

REGION=$(curl -H "X-aws-ec2-metadata-token: $TOKEN" -s \
  http://169.254.169.254/latest/dynamic/instance-identity/document \
  | grep region | awk -F\" '{print $4}')

aws ec2 terminate-instances --instance-ids "$INSTANCE_ID" --region "$REGION"

上記設定でインスタンスを起動後、インスタンスが削除されることを確認できました。
CloudTrail にもインスタンス自身から TerminateInstances API が実行されていた記録が残っていました。

まとめ

今回は EC2 インスタンス起動時にユーザーデータでインスタンスを自己削除できるかという内容を紹介しました。
どなたかの参考になれば幸いです。

Discussion