いまさら感はありますが、AWSコンソールは便利ですが。。数が増えると、にっちもさっちもいかなくなるので、コマンドで実行する方法を備忘録代わりにメモします。 ec2インスタンスを停止する、主な理由って私的には、インスタンスタイプの変更をすることで、コストダウンを計るとか、仕事してねー、サーバを洗い出し凍結するとか、そんな時に利用するのですが、 これらを初めはGUIでやっていて、数が増えてくると、後からだんだん面倒になってくるということで、コマンドメモを書いていきます。
ってことで、以前もどこかに書いたような書いていないようなですが・・
まず、初めに、CLIが動くように設定しておかなければいけませんね。もちろん、shutdown対象のサーバにCLIの設定しちゃうと、shutdownした時に、コマンド通らなくなっちまいますので、t3.microとか、t3.nanoとか、コマンドを操作するだけのインスタンスを立てておいてもいいかなー?って思います
インスタンスの生成
$
_AMIID=" ami-9fc81df4"
_SG="sg-79385d1d"
_PRIVATEKEY="My_Private_Key"
_SUBNETID="subnet-6a61ca44"
_INSTTYPE="t3.micro"
_REGION="us-east-1c"
_PRIVATEID="10.0.5.100"
ec2-run-instances ${_AMIID} -g ${_SG} -k ${_PRIVATEKEY} -s ${_SUBNETID} -t ${_INSTTYPE} -z ${_REGION} --private-ip-address {_PRIVATEID} --instance-initiated-shutdown-behavior stop
インスタンスの停止
_INSTID=i-030ced73ec14a46d2s
aws ec2 stop-instances --instance-ids ${_INSTID}
インスタンスが停止するまで待つ
aws ec2 wait instance-stopped --instance-ids ${_INSTID}
インスタンスの開始
aws ec2 start-instances --instance-ids ${_INSTID}
インスタンスが開始するまで待つ
aws ec2 wait instance-running--instance-ids ${_INSTID}
ENAがサポートしているかチェック
aws ec2 describe-instances --instance-ids ${_INSTID} --query 'Reservations[].Instances[].EnaSupport'
ENAドライバのインストール(インスタンス停止時に実行できます)
aws ec2 modify-instance-attribute --instance-id ${_INSTID} --ena-support
インスタンスタイプの変更(インスタンス停止時に実行できます)
_INSTTYPE="t3.micro"
aws ec2 modify-instance-attribute --instance-id ${_INSTID} --attribute instanceType --value ${_INSTTYPE}
aws cliコマンドを利用したbash(サンプル)
ここではインスタンスタイプを、t3.XXXに変更し、かつ、ENAに対応するような順番でshellを書いております。
順番としては、以下のような感じです。
bashの例
エラートラップは無視して書いています、こんなイメージになります
#!/bin/bash
cat << _EOT_
----------------------------------------------------------------
Please enter instanceId
----------------------------------------------------------------
_EOT_
read -p 'instanceId > ' _INSTID
if [ "${_INSTID}" = "" ] ;
then
exit 0
fi
cat << _EOT_
----------------------------------------------------------------
Please enter instanceType
----------------------------------------------------------------
Type vCPU ECU Mem Strage Price
t3.nano 2 variable 0.5 GiB EBS 0.0052USD/h
t3.micro 2 variable 1 GiB EBS 0.0104USD/h
t3.small 2 variable 2 GiB EBS 0.0208USD/h
t3.medium 2 variable 4 GiB EBS 0.0416USD/h
t3.large 2 variable 8 GiB EBS 0.0832USD/h
t3.xlarge 4 variable 16 GiB EBS 0.1664USD/h
t3.2xlarge 8 variable 32 GiB EBS 0.3328USD/h
t2.nano 1 variable 0.5 GiB EBS 0.0058USD/h
t2.micro 1 variable 1 GiB EBS 0.0116USD/h
t2.small 1 variable 2 GiB EBS 0.023USD/h
t2.medium 2 variable 4 GiB EBS 0.0464USD/h
t2.large 2 variable 8 GiB EBS 0.0928USD/h
t2.xlarge 4 variable 16 GiB EBS 0.1856USD/h
t2.2xlarge 8 variable 32 GiB EBS 0.3712USD/h
_EOT_
read -p 'instanceType(default:t3.micro) > ' _INSTTYPE
if [ "${_INSTTYPE}" = "" ] ;
then
_INSTTYPE="t3.micro"
fi
cat << _EOT_
----------------------------------------------------------------
instanceId : ${_INSTID}
instanceType : ${_INSTTYPE}
----------------------------------------------------------------
_EOT_
read -p 'Are you ok? (y/n) > ' _key
if [ "${_key}" != "y" ] ;
then
exit 0
fi
# change ec2 instanceType
aws ec2 stop-instances --instance-ids ${_INSTID}
aws ec2 wait instance-stopped --instance-ids ${_INSTID}
aws ec2 describe-instances --instance-ids ${_INSTID} --query 'Reservations[].Instances[].EnaSupport'
aws ec2 modify-instance-attribute --instance-id ${_INSTID} --ena-support
aws ec2 modify-instance-attribute --instance-id ${_INSTID} --attribute instanceType --value ${_INSTTYPE}
aws ec2 describe-instances --instance-ids ${_INSTID} --query 'Reservations[].Instances[].EnaSupport'
aws ec2 start-instances --instance-ids ${_INSTID}
exit 0
