すべてのプロダクト
Search
ドキュメントセンター

Auto Scaling:ECS インスタンスへの自動スナップショットポリシーの適用

最終更新日:Apr 01, 2026

Auto Scaling のライフサイクルフックを使用すると、新しく追加されたインスタンスを一時停止し、スケーリンググループに参加する前に自動タスクを実行できます。このチュートリアルでは、ライフサイクルフックと CloudOps Orchestration Service (OOS) テンプレートを組み合わせて、スケールアウトイベント中に手動操作なしで ECS インスタンスに自動スナップショットポリシーを適用する方法を説明します。

前提条件

開始する前に、以下を確認してください。

このチュートリアルでは、RAM ロール名として OOSServiceRole を使用します。別のロール名を使用することもできます。

仕組み

スケールアウトイベントが発生すると、Auto Scaling は新しく追加された各 ECS インスタンスをすぐにグループに参加させるのではなく、追加保留中の状態で一時停止します。この一時停止中に、Auto Scaling は OOS に信号を送り、ACS-ESS-LifeCycleApplyAutoSnapshotPolicy テンプレートを実行させます。OOS は指定された自動スナップショットポリシーをインスタンスのクラウドディスクに適用し、その後 Auto Scaling に通知してインスタンスの処理を続行させます。

Auto Scaling (スケールアウト) → ライフサイクルフックがインスタンスを追加保留中にする → OOS がテンプレートを実行し、スナップショットポリシーを適用 → ECS ディスクがスナップショットポリシーを受信 → ライフサイクルフックが完了 → インスタンスがスケーリンググループに参加

ステップ 1:OOS の RAM ロールに権限を付与する

ACS-ESS-LifeCycleApplyAutoSnapshotPolicy テンプレートには、ECS ディスクの記述、スナップショットポリシーの適用、およびライフサイクルアクションの完了に必要な権限が必要です。専用のポリシーを作成し、OOS の RAM ロールにアタッチします。

ポリシーの作成

  1. RAM コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、[権限] > [ポリシー] を選択します。

  3. [ポリシーの作成] をクリックします。

  4. [ポリシーの作成] ページで、[JSON] タブをクリックし、次のポリシー内容を入力します。

    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "ecs:DescribeDisks",
                    "ecs:ApplyAutoSnapshotPolicy",
                    "ecs:DescribeInstances"
                ],
                "Resource": "*",
                "Effect": "Allow"
            },
            {
                "Action": [
                    "ess:CompleteLifecycleAction"
                ],
                "Resource": "*",
                "Effect": "Allow"
            }
        ]
    }
  5. [OK] をクリックします。

  6. [ポリシーの作成] ダイアログボックスで、ポリシー名と説明を入力し、[OK] をクリックします。

    このチュートリアルでは、ポリシー名として ESSHookPolicyForApplyAutoSnapshotPolicy を使用します。

    ポリシーの内容を修正するには、[キャンセル] をクリックして JSON タブに戻ります。

RAM ロールへのポリシーのアタッチ

  1. 左側のナビゲーションウィンドウで、[アイデンティティ] > [ロール] を選択します。

  2. OOSServiceRole を見つけ、[操作] 列の [権限の付与] をクリックします。

  3. [権限の付与] パネルで、次のパラメーターを設定し、[権限を付与] をクリックします。

    パラメーター設定
    リソース範囲アカウント
    ポリシーESSHookPolicyForApplyAutoSnapshotPolicy

ステップ 2:ライフサイクルフックの作成とスケールアウトイベントのトリガー

ライフサイクルフックの作成

  1. Auto Scaling コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、[スケーリンググループ] をクリックします。

  3. 上部のナビゲーションバーで、リージョンを選択します。

  4. スケーリンググループを見つけ、[スケーリンググループ名/ID] 列の ID をクリックするか、[操作] 列の [詳細] をクリックして詳細ページを開きます。

  5. [ライフサイクルフック] タブをクリックし、[ライフサイクルフックの作成] をクリックします。

  6. 次のパラメーターを設定し、[OK] をクリックします。

    パラメーター設定
    名前ESSHookForApplyAutoSnapshotPolicy
    スケーリングアクティビティスケールアウトイベント
    タイムアウト期間300 (OOS テンプレートの実行時間に基づいて調整)
    デフォルトの実行ポリシー続行
    ライフサイクルフック発効時の通知[OOS テンプレート] > [パブリックテンプレート] > ACS-ESS-LifeCycleApplyAutoSnapshotPolicy

    ACS-ESS-LifeCycleApplyAutoSnapshotPolicy テンプレートのパラメーター:

    • AutoSnapshotPolicyId:ご利用の自動スナップショットポリシーの ID を入力します。

    • OOSAssumeRoleOOSServiceRole を選択します。

    タイムアウト期間は、OOS テンプレートの実行全体をカバーできる十分な長さに設定してください。タイムアウトが短すぎると、フックの有効期限が切れる前に OOS がスナップショットポリシーの適用を完了できない場合があります。

スケールアウトイベントのトリガー

このチュートリアルでは、スケーリングルールを手動で実行してスケールアウトイベントをトリガーします。定期タスクや監視タスクを使用することもできます。

ライフサイクルフックは、スケーリングルールが実行されるときに有効になります。ECS インスタンスをスケーリンググループに手動で追加した場合は有効になりません。
  1. スケーリンググループの詳細ページで、[スケーリングルールと監視タスク] タブをクリックします。

  2. [スケーリングルール] タブをクリックし、[スケーリングルールの作成] をクリックします。

  3. 次のパラメーターを設定し、[OK] をクリックします。

    パラメーター設定
    ルール名Add1
    ルールタイプ簡易スケーリングルール
    操作1 個のインスタンスを追加
  4. [スケーリングルール] タブで、Add1 ルールを見つけ、[操作] 列の [実行] をクリックします。

  5. [スケーリングルールの実行] メッセージで、[OK] をクリックします。

    Auto Scaling はスケーリンググループに 1 つの ECS インスタンスを追加します。ESSHookForApplyAutoSnapshotPolicy ライフサイクルフックは、インスタンスを追加保留中の状態にします。その後、Auto Scaling は OOS に信号を送り、ACS-ESS-LifeCycleApplyAutoSnapshotPolicy テンプレートを実行してスナップショットポリシーを適用させます。

結果の確認

  1. スケーリンググループの詳細ページで、[インスタンス] タブをクリックします。

  2. 新しい ECS インスタンスを見つけ、[ECS インスタンス ID/名前] 列の ID をクリックします。

  3. インスタンスの詳細ページで、[ブロックストレージ (ディスク)] タブをクリックします。

  4. クラウドディスクを見つけ、[操作] 列の [自動スナップショットポリシーの設定] をクリックします。

成功:[自動スナップショットポリシー] トグルがオンになり、OOS テンプレートで指定したポリシーが表示されます。

SCR-20240710-lpiu

失敗:トグルがオフになっています。OOS の実行を確認して原因を特定します。詳細については、下記の「(オプション) ステップ 3:OOS の実行ステータスの表示」をご参照ください。

(オプション) ステップ 3:OOS の実行ステータスの表示

スナップショットポリシーが適用されなかった場合は、OOS の実行ログを確認して問題を診断します。

  1. OOS コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、[自動タスク] > [タスク実行管理] を選択します。

  3. 時間で実行を見つけ、[操作] 列の [詳細] をクリックします。

  4. 実行の詳細を確認します。

    • [基本情報] セクション:実行 ID とステータスが表示されます。

    • [実行ステップと結果] セクション:個々のタスクノードをクリックして、ステップレベルの詳細を表示します。

    • [実行結果] セクション:実行が失敗した場合、エラーメッセージがここに表示されます。エラーを下記の「よくある質問」セクションと照らし合わせてください。

    詳細については、「実行の詳細の表示」をご参照ください。

クリーンアップ

このチュートリアルのために特別に作成したリソースが不要になった場合は、不要な課金を避けるために削除してください。

RAM ポリシー:

  1. RAM コンソールで、[権限] > [ポリシー] に移動します。

  2. ESSHookPolicyForApplyAutoSnapshotPolicy を見つけ、削除する前に OOSServiceRole からデタッチします。

ライフサイクルフック:

  1. Auto Scaling コンソールで、スケーリンググループの詳細ページを開きます。

  2. [ライフサイクルフック] タブをクリックし、ESSHookForApplyAutoSnapshotPolicy を見つけて削除します。

スケーリングルール:

  1. スケーリンググループの詳細ページで、[スケーリングルールと監視タスク] タブをクリックします。

  2. Add1 スケーリングルールを見つけて削除します。

よくある質問

O&M タスクが失敗した場合は、OOS の実行結果のエラーメッセージを確認し、次の表をご参照ください。

エラーメッセージ原因解決策
Forbidden.Unauthorized message: A required authorization for the specified action is not supplied.Auto Scaling にアクションを実行する権限がありません。OOSServiceRole に必要な権限があることを確認してください。
Forbidden.RAM message: User not authorized to operate on the specified resource, or this API doesn't support RAM.RAM ロールに必要なリソースを管理する権限がありません。RAM ロールで OOS に必要な権限を付与してください。OOS が OOS テンプレートで宣言されたリソースを管理する前に、RAM ロールに対応する権限が必要です。
LifecycleHookIdAndLifecycleActionToken.Invalid message: The specified lifecycleActionToken and lifecycleActionId you provided does not match any in process lifecycle action.OOS が完了する前に、ライフサイクルフックのアクションが終了または停止されました。ライフサイクルフックのタイムアウト期間を延長して、OOS がすべての O&M タスクを完了するのに十分な時間を確保してください。

次のステップ

同じライフサイクルフックのパターンを使用して、スケールインイベント中に ECS インスタンスでスクリプトを自動的に実行します。詳細については、「ECS インスタンスでのスクリプトの自動実行」をご参照ください。

FAQ

運用保守 (O&M) タスクが失敗した場合は、実行結果のエラーメッセージに基づいて原因を特定します。詳細については、「よくある質問」をご参照ください。

一般的なエラーメッセージは次のとおりです。

エラーメッセージ

原因

解決策

Forbidden.Unauthorized message: A required authorization for the specified action is not supplied.

Auto Scaling に指定されたアクションを実行する権限がありません。

OOSServiceRole RAM ロールに必要な権限が付与されていることを確認します。

Forbidden.RAM message: User not authorized to operate on the specified resource, or this API doesn't support RAM.

RAM ユーザーまたは RAM ロールに対応するリソースを操作する権限がありません。

OOSServiceRole RAM ロールに必要な権限があることを確認します。たとえば、OOS サービスのサンプル権限を RAM ロールに付与できます。OOS サービスが OOS テンプレートで指定されたリソースを管理できるように、RAM ロールに操作権限を追加する必要があります。

LifecycleHookIdAndLifecycleActionToken.Invalid message: The specified lifecycleActionToken and lifecycleActionId you provided does not match any in process lifecycle action.

進行中のライフサイクルアクションの有効期限が切れているか、中止されています。

OOS テンプレートで定義された O&M タスクがタイムアウト期間内に完了できるように、ライフサイクルフックのタイムアウト期間を評価します。