概要
AWS CloudShell から コマンドライン(AWS CLI)で EC2 インスタンスを起動・停止します
AWS CloudShell
AWS が提供するブラウザベースのシェル環境です
AWS Command Line Interface (aws-cli)
コマンドラインシェルを使用して AWS サービスとやり取りするためのオープンソースツールです
https://github.com/aws/aws-cli/tree/v2
環境
- AWS CloudShell
- aws-cli 2.13.3
手順の流れ
手順
1. EC2 インスタンスのステータス確認
AWS マネジメントコンソールから
AWS CloudShell を起動し、 EC2 インスタンスのステータスを確認します
コマンド
$ aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId, State.Name, Tags[?Key==`Name`].Value | [0]]' --output text
実行結果
# ヘッダーは出力されません
InstanceId State.Name Tags.Value
-------------------- ---------- -------------
i-1234567890abcdef1 stopped ec2-instance1
i-1234567890abcdef2 running ec2-instance2
2. EC2 インスタンスの起動
1で取得したインスタンスIDを指定して、EC2 インスタンスを起動します
コマンド
$ aws ec2 start-instances --instance-ids i-1234567890abcdef1
実行結果
{
"StartingInstances": [
{
"InstanceId": "i-1234567890abcdef1",
"CurrentState": {
"Code": 0,
"Name": "pending"
},
"PreviousState": {
"Code": 80,
"Name": "stopped"
}
}
]
}
3. EC2 インスタンスの停止
1で取得したインスタンスIDを指定して、EC2 インスタンスを停止します
コマンド
$ aws ec2 stop-instances --instance-ids i-1234567890abcdef1
実行結果
{
"StoppingInstances": [
{
"InstanceId": "i-1234567890abcdef1",
"CurrentState": {
"Code": 64,
"Name": "stopping"
},
"PreviousState": {
"Code": 16,
"Name": "running"
}
}
]
}
4. エイリアスの作成
コマンドのエイリアスを作成します
コマンド
$ mkdir -p ~/.aws/cli
$ echo '[toplevel]' > ~/.aws/cli/alias
$ vi ~/.aws/cli/alias
入力内容
# ~/.aws/cli/alias
[toplevel]
[command ec2]
status = describe-instances \
--query 'Reservations[*].Instances[*].[InstanceId, State.Name, Tags[?Key==`Name`].Value | [0]]' \
--output text
start = start-instances --instance-ids
stop = stop-instances --instance-ids
エイリアスを作成することで、以下のようにコマンドを短縮して実行することができます
$ aws ec2 status
$ aws ec2 start <instance_id>
$ aws ec2 stop <instance_id>
参考