📝
[小ネタ] 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