AWS CLIを利用して、EC2のインスタンスを削除してみます。
前提条件
- [JAWS-UG CLI] 総合案内: http://qiita.com/tcsh/items/14c3278f69ab073afe0f を確認して、必要な手順を終えていること。
- ハンズオンで利用したEC2インスタンス以外のインスタンスが稼動していないこと。
EC2への権限
- EC2に対してフル権限があること。
AWS CLIのバージョン
以下のバージョンで動作確認済
- AWS CLI 1.11.2
- AWS CLI 1.7.39
コマンド
aws --version
結果(例)
aws-cli/1.7.39 Python/2.7.5 Darwin/13.4.0
- 準備
=======
0.1. リージョンの決定
変数の設定
export AWS_DEFAULT_REGION='us-west-2'
0.2. 変数の確認
変数の確認
aws configure list
結果(例)
Name Value Type Location
---- ----- ---- --------
profile ec2Full-prjZ-mbp13 env AWS_DEFAULT_PROFILE
access_key ****************LOAQ shared-credentials-file
secret_key ****************I1O1 shared-credentials-file
region us-west-2 env AWS_DEFAULT_REGION
profileが '<not set>' と表示される場合は、以下を実行してください。
コマンド
export AWS_DEFAULT_PROFILE=<IAMユーザ名>
0.3. 稼動インスタンスを確認
同一リージョンで稼動しているインスタンスのインスタンスIDを確認します。
コマンド
ARRAY_EC2_INSTANCE_ID=$( \
aws ec2 describe-instances \
--filters Name=instance-state-name,Values=running \
--query 'Reservations[].Instances[].InstanceId' \
--output text \
) \
&& echo ${ARRAY_EC2_INSTANCE_ID}
結果(例)
i-xxxxxxxx
- EC2インスタンス削除
======================
2.1. EC2インスタンス削除
変数の設定
EC2_INSTANCE_ID=$(echo ${ARRAY_EC2_INSTANCE_ID} | sed 's/ .*$//') \
&& echo ${EC2_INSTANCE_ID}
変数の確認
cat << ETX
EC2_INSTANCE_ID: ${EC2_INSTANCE_ID}
ETX
コマンド
aws ec2 terminate-instances \
--instance-ids ${EC2_INSTANCE_ID}
結果(例)
{
"TerminatingInstances": [
{
"InstanceId": "i-xxxxxxxx",
"CurrentState": {
"Code": 32,
"Name": "shutting-down"
},
"PreviousState": {
"Code": 16,
"Name": "running"
}
}
]
}
2.2. EC2インスタンスの状態確認
コマンド
EC2_INSTANCE_STATE=$( \
aws ec2 describe-instances \
--instance-ids ${EC2_INSTANCE_ID} \
--query 'Reservations[].Instances[].State.Name' \
--output text \
) \
&& echo ${EC2_INSTANCE_STATE}
結果
terminated
同一リージョンでインスタンスが起動していないことを確認します。
コマンド
ARRAY_EC2_INSTANCE_ID=$( \
aws ec2 describe-instances \
--filters Name=instance-state-name,Values=running \
--query 'Reservations[].Instances[].InstanceId' \
--output text \
) \
&& echo ${ARRAY_EC2_INSTANCE_ID}
結果
(戻り値なし)