LoginSignup
0
1

More than 3 years have passed since last update.

EC2インスタンスをCLIで素早く起動&停止するには

Posted at

AWS CLIでEC2インスタンスを起動するには aws ec2 start-instances --instance-ids i-XXXXX とします。

$ aws ec2 start-instances --instance-ids i-XXXXX
{
    "StartingInstances": [
        {
            "CurrentState": {
                "Code": 16,
                "Name": "pending"
            },
            "InstanceId": "i-XXXXX",
            "PreviousState": {
                "Code": 16,
                "Name": "stopped"
            }
        }
    ]
}

ただ、これだと「起動する命令を送った」だけなので、正しく起動が完了したことや、割り当てられたIPアドレスなどが分かりません。

そこで次のように、起動命令->起動待ち->インスタンス情報を表示。というのを順番に実行します。これで起動したインスタンスのグローバルIPアドレスなどをすぐに確認することができます。

$ aws ec2 start-instances --instance-ids i-XXXXX \
&& aws ec2 wait instance-running --instance-ids i-XXXXX; \
aws ec2 describe-instances --instance-ids i-XXXXX \
| jq '.Reservations[].Instances[] | \
{InstanceId, InstanceState: .State.Name, PublicDnsName, PublicIpAddress}'
{
    "StartingInstances": [
        {
            "CurrentState": {
                "Code": 16,
                "Name": "stopping"
            },
            "InstanceId": "i-XXXXX",
            "PreviousState": {
                "Code": 16,
                "Name": "running"
            }
        }
    ]
}
{
  "InstanceId": "i-XXXXX",
  "InstanceState": "running",
  "PublicDnsName": "ec2-99-99-99-99.ap-northeast-1.compute.amazonaws.com",
  "PublicIpAddress": "99.99.99.99"
}

次に停止です。EC2インスタンスを停止するには aws ec2 stop-instances --instance-ids i-XXXXX とします。

$ aws ec2 stop-instances --instance-ids i-XXXXX
{
    "StoppingInstances": [
        {
            "CurrentState": {
                "Code": 64,
                "Name": "stopping"
            },
            "InstanceId": "i-XXXXX",
            "PreviousState": {
                "Code": 16,
                "Name": "running"
            }
        }
    ]
}

これも停止命令を送るだけなので、これだけだと実際に止まったことが確認できません。止めたつもりなのに止まってないと結構辛いので、これも停止待ちを入れてみます。

$ aws ec2 stop-instances --instance-ids i-XXXXX \
&& aws ec2 wait instance-stopped --instance-ids i-XXXXX; \
aws ec2 describe-instances --instance-ids i-XXXXX \
| jq '.Reservations[].Instances[] | {InstanceId, InstanceState: .State.Name}'
{
    "StoppingInstances": [
        {
            "CurrentState": {
                "Code": 64,
                "Name": "stopping"
            },
            "InstanceId": "i-XXXXX",
            "PreviousState": {
                "Code": 16,
                "Name": "running"
            }
        }
    ]
}
{
  "InstanceId": "i-XXXXX",
  "InstanceState": "stopped"
}

これで確実に止まったことが確認できます。

コマンドが長いのでALIASにしておくと便利だと思います。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1