Database JUNKY

MySQL,MariaDBを中心としたブログです

aws cliコマンドをマスターしてブラウザいらずになろう!

いまさら感はありますが、AWSコンソールは便利ですが。。数が増えると、にっちもさっちもいかなくなるので、コマンドで実行する方法を備忘録代わりにメモします。 ec2インスタンスを停止する、主な理由って私的には、インスタンスタイプの変更をすることで、コストダウンを計るとか、仕事してねー、サーバを洗い出し凍結するとか、そんな時に利用するのですが、 これらを初めはGUIでやっていて、数が増えてくると、後からだんだん面倒になってくるということで、コマンドメモを書いていきます。

ってことで、以前もどこかに書いたような書いていないようなですが・・

まず、初めに、CLIが動くように設定しておかなければいけませんね。もちろん、shutdown対象のサーバにCLIの設定しちゃうと、shutdownした時に、コマンド通らなくなっちまいますので、t3.microとか、t3.nanoとか、コマンドを操作するだけのインスタンスを立てておいてもいいかなー?って思います

hit.hateblo.jp

インスタンスの生成

$ 
_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を書いております。

hit.hateblo.jp

順番としては、以下のような感じです。

  1. 対象インスタンスの停止
  2. 対象インスタンスのENAドライバインストール
  3. 対象インスタンスインスタンスタイプ変更
  4. 対象インスタンスの開始

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

hit.hateblo.jp

f:id:hit10231023:20180309123622p:plain