サイトアイコン 協栄情報ブログ

本当に守ってくれるのか?EC2停止保護について検証


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

本日は、お日がらもよく
EC2の停止保護について探りを入れてみたいと思います。

終了保護(Termination Protection)ではないです。
日本語だとちょっと紛らわしいですが、

終了は、あとかたもなく消えてしまいますが、
停止は、一時停止で、すぐに復活できる状態だよ。ぐらいにとらえてください。

EC2の停止保護について

間違いは誰にでもあるものですから、うっかりさんにもうれしいサービスになっているのかと、
期待を胸に検証していきたいと思います。

まずは結果から発表します!!

結果

  1. マネージメントコンソール → ×停止できない
  2. Lambda → ×停止できない
  3. RDPで接続後、Windowsの電源マークからシャットダウン → 〇停止できる
  4. SSH接続後、sudo shutdown → 〇停止できる
  5. AWS Systems Manager Session Manager から停止 → 〇停止できる
  6. コンソールからReboot → 〇再起動できる
  7. CLI(Cloud Shell)   → ×停止できない

感想

それぞれ、どこから停止できるのか試してみましたが、

あれ、・・・意外と落とせちゃうのか。
という感想です。

実務で使うにはちょうどいい塩梅なのかわかりませんが、
落とせすぎても、あんまり意味がなさそう。

検証風景

検証作業中のスクショやログなどを各項目ごとに載せていきます。

1. マネージメントコンソール → ×停止できない

真っ赤ですね、disableApiStopとお怒りのようです。

2. Lambda → ×停止できない

テスト結果がこちら

エラー結果が長くて見切れていますが、

Response { "statusCode": 500, "body": "An error occurred: An error occurred (OperationNotPermitted) when calling the StopInstances operation: The instance 'i-090ae2a92b6711dc6' may not be stopped. Modify its 'disableApiStop' instance attribute and try again." }

さきほどと同じ disableApiStop が表示されています。

テストに使用したLambdaのコード↓

import boto3

def lambda_handler(event, context):
    # 停止するEC2インスタンスIDを指定
    instance_id = 'i-090ae2a92b6711dc6' 
    ec2 = boto3.client('ec2')

    try:
        # EC2インスタンスを停止
        ec2.stop_instances(InstanceIds=[instance_id])
        return {
            'statusCode': 200,
            'body': 'EC2 instance stop initiated successfully.'
        }
    except Exception as e:
        return {
            'statusCode': 500,
            'body': f'An error occurred: {str(e)}'
        }

3. RDPで接続後、Windowsの電源マークからシャットダウン → 〇停止できる

おなじみのWindows画面に、RDSクライアントからログインをして、

ここにある電源マーク(Power)から停止できるか、



ふつうにできますね。

4. SSH接続後、sudo shutdown → 〇停止できる

Tera Termでログインしまして、
shutdownコマンド入力後、停止するまで20秒ぐらいかかっていました。

5. Session Manager から停止 → 〇停止できる

言わずもがなかもしれませんが、
AWS Systems Manager Session Managerでも落ちます。

6. コンソールからReboot → 〇再起動できる

停止じゃなくて再起動はどうかな?と停止できなかったコンソールで試してみましたが、
問題なく再起動できました。

7. CLI(Cloud Shell) → ×停止できない

追加でCLI、今回はお手軽なのでCloud Shellを使ってみました。

でました!disableApiStop が表示されています。
CLIでは落ちないようです。

それでは、ご覧いただきありがとうございました!またどこかで

モバイルバージョンを終了