1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【AWS】「InstanceStateとInstanceStatusは違う」という紛らわしいお話【EC2】

Last updated at Posted at 2020-11-23

1. はじめに

タイトルだけで完結してしまっているような気もしますが、
「そうなんだ!」と思った方は少しスクロールしていただけると幸いです。

2. とりあえず取得してみる

早速describe-instance-statusを叩いてみましょう。
~~と言いつつ、自分はリファレンスの実行例をコピペしましたが。~~~

describe-instance-status
$ aws ec2 describe-instance-status --instance-id i-1234567890abcdef0
{
    "InstanceStatuses": [
        {
            "InstanceId": "i-1234567890abcdef0",
            "InstanceState": {
                "Code": 16,
                "Name": "running"
            },
            "AvailabilityZone": "us-east-1d",
            "SystemStatus": {
                "Status": "ok",
                "Details": [
                    {
                        "Status": "passed",
                        "Name": "reachability"
                    }
                ]
            },
            "InstanceStatus": {
                "Status": "ok",
                "Details": [
                    {
                        "Status": "passed",
                        "Name": "reachability"
                    }
                ]
            }
        }
    ]
}

InstanceStateとInstanceStatusが登場しますが、StateとStatusって一緒じゃないの?ってなりますよね。
辞書を引いてみると、どちらも「状態」と訳せるようです。

3. 原典にあたる

InstanceState:runningInstanceStatus:okの他にどのような値があるのか、公式から引用しました。

1. InstanceState

稼働状況と考えるのがよさそうです。

Valid Values: pending | running | shutting-down | terminated | stopping | stopped

2. InstanceStatus

ざっくりと言うと、問題の有無ということでしょうか。

Valid Values: ok | impaired | insufficient-data | not-applicable | initializing

4. 使いどころ

例えば検証環境のインスタンスを夜間に停止し、翌朝に起動するというようなLambda関数(やシェルスクリプト)を作る場合は。。。

1. State

停止/起動を実行した後に確認し、結果に応じて待機したり再度実行したりという風に使えます。

2. Status

起動後に確認し、OKでなければ再起動するとかエラーを吐くという処理を実装しても良いかもしれません。
ただし、ec2 wait instance-status-okには注意が必要です。

@netebakariさんよりコメントをいただきました。これの仕組みは自分で作らずCloudWatchにお願いしましょう。

5. ちなみに

「status vs state」論争に終止符を打つという記事がありました。論争になるほどなんですね。
少なくともInstance{State|Status}については、以下の記載がしっくりきます。

Status = 調子はどう?
State = 何をしているか?

6. おわりに

4. 使いどころで例に挙げたLambda関数を作成する際にこのあたりを詳しく調べたのですが、
だいぶ前のことなので割と忘れてしまっている部分もありました。
ナレッジはすぐに形にしないといけませんね。。。

1
1
1

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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?