「お前には n 日間でAWSを学んでもらう」 #4 です. シェルスクリプトでインスタンスを起動してみましょう.

この記事のスコープ

  • シェルスクリプトによるインスタンスの起動
  • シェルスクリプトによるインスタンスの停止

スコープ外

  • Linux系OSの手元実行環境 (WindowsユーザーならWSLとか使ってください)
  • VPC・サブネット・セキュリティグループ・キーペアの作成

今までの記事を参考にしてください

免責事項

思わぬ請求他, 生じた損害に対しては一切の責任を負いかねます.

インスタンスの起動

特に特殊なこともありません. インスタンス作成のためのコマンドをテキストファイルに書き出して実行してみます.

#!/bin/sh

# Quickly launch Amazon Linux EC2 instance.
# Usage : ./run_instance.sh > output

# Settings
vpc='vpc-xxxxxxxxxxxxxxxxx'
subnet_id='subnet-xxxxxxxxxxxxxxxxxx'
secgroup_id='sg-xxxxxxxxxxxxxxxxx'
ami='ami-0a1c2ec61571737db'
key_name='testKey'
instance_type='t2.micro'

# run
aws ec2 run-instances \
        --image-id "$ami" \
        --count 1 \
        --instance-type "$instance_type" \
        --key-name "$key_name" \
        --security-group-ids "$secgroup_id" \
        --subnet-id "$subnet_id"
run_instance.sh

インスタンスの終了

ちょっとスクリプトっぽいことやっています.

起動中のすべてのインスタンスのIDを収集し, そのIDをパイプでつないでやって, インスタンス1個1個終了していきます.

#!/bin/sh

# Quickly terminate all instances.
# Usage : ./terminate_instances.sh

# run
# すべての起動中のインスタンスIDを収集し, そして終了します.
aws ec2 describe-instances \
        --filters Name=instance-state-code,Values=16 \
        --query Reservations[*].Instances[*].[InstanceId] \
        --output text | while read line
do
        aws ec2 terminate-instances --instance-ids "$line"
done
terminate_instances.sh

実行結果は次のとおりです:

{
    "TerminatingInstances": [
        {
            "CurrentState": {
                "Code": 32,
                "Name": "shutting-down"
            },
            "InstanceId": "i-0fed97613cb5dfee3",
            "PreviousState": {
                "Code": 16,
                "Name": "running"
            }
        }
    ]
}
{
    "TerminatingInstances": [
        {
            "CurrentState": {
                "Code": 32,
                "Name": "shutting-down"
            },
            "InstanceId": "i-060a4ae3489ffbbc0",
            "PreviousState": {
                "Code": 16,
                "Name": "running"
            }
        }
    ]
}

terminate-instances ですから, 本当は複数IDを一気に渡してやることができます.
行区切り -> 空白区切りにするような処理を書けばいいのかもしれませんが僕があまりシェルスクリプトわかってません!

おわり!

インスタンスを作っては必ず滅ぼすというような使い方をしている方はこのシェルスクリプトをcronにでも登録すると良いと思います.

(ネタ切れ...)ちょっと今回内容薄いですがお疲れさまでした!