0.はじめに
EC2 を作成する時や新しく EBS をアタッチする時などに、DeleteOnTermination 属性(合わせて削除)の値を設定するかと思いますが、後で変更したいッ!!
と、
思うことがありませんか?
1.アタッチされている EBS の DeleteOnTermination 属性 (合わせて削除) の値を変更する
ということで、
私はあったので、問い合わせをしたところ、以下の様な回答を頂きました。
インスタンスの起動時またはインスタンスの実行中に、EC2にアタッチされているEBSボリュームの DeleteOnTermination 属性(合わせて削除)の値(設定)を変更することができます。しかしながら、現時点では、 管理コンソールからの設定変更はサポートされておらず、コマンドラインを使用して設定の変更を行う必要があります。
なるほど。
どうやら、AWS CLI から出来るみたいです。
コンソールから設定を変更できる機能が無かったので、てっきり出来ないものかと思い、要望をあげたところ、丁寧なご回答を頂きました。
で、
以下のサイトも補足で教えて頂きました。
ネットを調べてみると、
他にも参考になるサイトがいくつかありました。
- delete-on-terminationを後から変更するのがとても大変 | AWS情報ブログ
- EBSボリュームのDeleteOnTerminationの設定を後から変える方法 - Swing-by
- AWS EC2 で Delete on Termination 設定を変更するワンライナー - Kenichi Maehashi's Blog
いやー、
知らなかったです。
そして、ありがとうございました。
で、
手順もわかったので、
以下のスクリプトを使って、
今の設定がどうなっているか調べながら、セコセコと変更しました。
#!/bin/bash
# ---1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----
# ==============================================================================
#
# EC2-ModifyDeleteOnTermination.bash
#
# * ex) $ ./EC2-ModifyDeleteOnTermination.bash
#
# ==============================================================================
mypath=${0%/*}
myname=${0##*/}
mybase=${myname%.*}
mydate=`date +'%Y-%m-%d'`
LOG()
{
printf "[%-10s %-8s] (%06d) %-50s\n" \
`date '+%Y-%m-%d %H:%M:%S'` "${LINENO}" "${1}"
printf "[%-10s %-8s] (%06d) %-50s\n" \
`date '+%Y-%m-%d %H:%M:%S'` "${LINENO}" "${1}">>"${mypath}/${myname}.log"
}
# ------------------------------------------------------------------------------
# Set
# ------------------------------------------------------------------------------
#LOG "<<<<<<<< Set >>>>>>>>"
# Confirm Argv
#if [ ${#} -lt 2 ]; then
# LOG "[ERROR] Parameter Error !! (${0} ${1} ${2})"
# LOG "Usage: ${myname} [User ID] [Password]"
# exit -1
#fi
export AWS_ACCESS_KEY_ID=[アクセスキー]
export AWS_SECRET_ACCESS_KEY=[シークレットキー]
export AWS_DEFAULT_REGION=ap-northeast-1
# ------------------------------------------------------------------------------
# Program Start
# ------------------------------------------------------------------------------
#LOG "<<<<<<<< Program Start >>>>>>>>"
aws ec2 describe-instances | jq '.Reservations[].Instances[] | {Tags, InstanceId, BlockDeviceMappings}'
EC2ID=[EC2インスタンスID]
aws ec2 describe-instances --instance-ids ${EC2ID} | jq '.Reservations[].Instances[] | {Tags, InstanceId, BlockDeviceMappings}'
DEVNM=[デバイス名]
VOLID=[ボリューム名]
aws ec2 modify-instance-attribute --instance-id ${EC2ID} --block-device-mappings "{\"DeviceName\":\"${DEVNM}\",\"Ebs\":{\"DeleteOnTermination\":true,\"VolumeId\":\"${VOLID}\"}}"
aws ec2 describe-instances --instance-ids ${EC2ID} | jq '.Reservations[].Instances[] | {Tags, InstanceId, BlockDeviceMappings}'
# ------------------------------------------------------------------------------
# Program End
# ------------------------------------------------------------------------------
#LOG "<<<<<<<< Program End >>>>>>>>"
# ---1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----
99.ポイント
- コンソールに機能がなくても、AWS CLI では機能があったりするので、まずはネットで検索してみる。
XX.まとめ
まぁ、当たり前のことではあるんですが、
「自分が困っていること」って、実は他にも同じ様に困っている人がいたりするんですよね。
だから、
まずはネットで調べてみて、それでも見つからなかったら、問い合わせしてみる。
そして、
自分の問題が解決出来たら、ちゃんと情報発信してシェアする。
実は、
下らない様な情報でも役に立つこともあるので、しっかりやっていかないとなと思います。
とりあえず、
AWS のヘルプ担当の方々、ありがとうございましたー♪