AWS Systems Manager
ユーザーガイド

到達不可能なインスタンスでの EC2Rescue ツールの実行

EC2Rescue は、Amazon EC2 Linux および Windows Server インスタンスでの問題の診断とトラブルシューティングに役立ちます。ツールを手動で実行するには、「Linux Server 用 EC2Rescue の使用」と「EC2Rescue for Windows Server の使用」を参照してください。または、ツールを自動的に実行するには、Systems Manager Automation と AWSSupport-ExecuteEC2Rescue ドキュメントを使用します。AWSSupport-ExecuteEC2Rescue ドキュメントは、EC2Rescue を使用するために通常必要になるステップを自動化する、Systems Manager アクション AWS CloudFormation アクション、および Lambda 関数の組み合わせを実行するよう設計されています。

AWSSupport-ExecuteEC2Rescue ドキュメントでは、オペレーティングシステム (OS) のタイプ別にトラブルシューティングを行い、問題を修正できます。詳細なリストについては、以下のトピックを参照してください。

Windows: 「コマンドラインでの EC2Rescue for Windows Server の使用」の「レスキューアクション」を参照してください。

Linux: 一部の Linux 用 EC2Rescue モジュールでは、問題を検出して修正を試みます。詳細については、GitHub でモジュール別の「aws-ec2rescue-linux」ドキュメントを参照してください。

仕組み

自動化と AWSSupport-ExecuteEC2Rescue ドキュメントによるインスタンスのトラブルシューティングは次のように機能します。

  • 到達不可能なインスタンスの ID を指定して、自動化のワークフローを実行します。

  • システムは一時 VPC を作成し、一連の Lambda 関数を実行して VPC を設定します。

  • システムは元のインスタンスと同じアベイラビリティーゾーン内で一時 VPC のサブネットを識別します。

  • システムは一時的な、SSM を有効にした ヘルパーインスタンスを起動します。

  • システムは元のインスタンスを停止して、バックアップを作成します。次に、元のルートボリュームをヘルパーインスタンスにアタッチします。

  • システムは、Run Command を使用してヘルパーインスタンスで EC2Rescue を実行します。EC2Rescue は、アタッチされた元のルートボリュームの問題の修正を試みます。完了すると、EC2Rescue は元のインスタンスにルートボリュームを再アタッチします。

  • システムは元のインスタンスを再起動して、一時インスタンスを削除します。また、一時 VPC と、自動化の開始時に作成された Lambda 関数を削除します。

開始する前に

次の自動化を実行する前に、以下の操作を行います。

  • 到達不可能なインスタンスのインスタンス ID をコピーします。この ID は次の手順で指定します。

  • オプションとして、到達不可能なインスタンスと同じアベイラビリティーゾーンのサブネットの ID を収集します。このサブネットに EC2Rescue インスタンスが作成されます。サブネットを指定しないと、自動化により、新しい一時 VPC が AWS アカウントに作成されます。AWS アカウントに、少なくとも 1 つの利用可能な VPC があることを確認します。デフォルトでは、リージョンで最大 5 つの VPC を作成できます。リージョンですでに 5 つの VPC を作成した場合、自動化は失敗し、インスタンスへの変更は行われません。詳細については、「VPC とサブネット」を参照してください。

  • 必要に応じて、自動化用の AWS Identity and Access Management (IAM) ロールを作成および指定できます。このロールを指定しない場合、自動化はそれを実行したユーザーのコンテキストで実行されます。自動化用のロールの作成の詳細については、「IAM サービスロールを使用して、Automation ワークフローを実行する」を参照してください。

インスタンスでアクションを実行するための AWSSupport-EC2Rescue アクセス許可の付与

EC2Rescue では、自動化の実行中にインスタンスで一連のアクションを実行するためのアクセス許可が必要です。これらのアクションでは、AWS Lambda、IAM、および Amazon EC2 サービスを呼び出して、インスタンスの問題の安全な修正を試みます。AWS アカウント、VPC、またはその両方で管理者レベルのアクセス許可がある場合は、このセクションで説明しているように、アクセス許可を設定することなく自動化を実行できることがあります。管理者レベルのアクセス許可がない場合は、ユーザーまたは管理者が、次のいずれかのオプションを使用してアクセス許可を設定する必要があります。

IAM ポリシーを使用したアクセス許可の付与

次の IAM ポリシーを IAM ユーザーアカウント、グループ、またはロールにインラインポリシーとしてアタッチするか、新しい IAM 管理ポリシーを作成し、ユーザーアカウント、グループ、またはロールにアタッチできます。ユーザーアカウント、グループ、またはロールへのインラインポリシーの追加の詳細については、「インラインポリシーの使用」を参照してください。新しい管理ポリシーの作成の詳細については、「管理ポリシーの使用」を参照してください。

注記

新しい IAM 管理ポリシーを作成する場合、AmazonSSMAutomationRole 管理ポリシーもアタッチし、インスタンスが Systems Manager API と通信できるようにする必要があります。

AWSSupport-EC2Rescue 用の IAM ポリシー

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "lambda:InvokeFunction", "lambda:DeleteFunction", "lambda:GetFunction" ], "Resource": "arn:aws:lambda:*:An-AWS-Account-ID:function:AWSSupport-EC2Rescue-*", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::awssupport-ssm.*/*.template", "arn:aws:s3:::awssupport-ssm.*/*.zip" ], "Effect": "Allow" }, { "Action": [ "iam:CreateRole", "iam:CreateInstanceProfile", "iam:GetRole", "iam:GetInstanceProfile", "iam:PutRolePolicy", "iam:DetachRolePolicy", "iam:AttachRolePolicy", "iam:PassRole", "iam:AddRoleToInstanceProfile", "iam:RemoveRoleFromInstanceProfile", "iam:DeleteRole", "iam:DeleteRolePolicy", "iam:DeleteInstanceProfile" ], "Resource": [ "arn:aws:iam::An-AWS-Account-ID:role/AWSSupport-EC2Rescue-*", "arn:aws:iam::An-AWS-Account-ID:instance-profile/AWSSupport-EC2Rescue-*" ], "Effect": "Allow" }, { "Action": [ "lambda:CreateFunction", "ec2:CreateVpc", "ec2:ModifyVpcAttribute", "ec2:DeleteVpc", "ec2:CreateInternetGateway", "ec2:AttachInternetGateway", "ec2:DetachInternetGateway", "ec2:DeleteInternetGateway", "ec2:CreateSubnet", "ec2:DeleteSubnet", "ec2:CreateRoute", "ec2:DeleteRoute", "ec2:CreateRouteTable", "ec2:AssociateRouteTable", "ec2:DisassociateRouteTable", "ec2:DeleteRouteTable", "ec2:CreateVpcEndpoint", "ec2:DeleteVpcEndpoints", "ec2:ModifyVpcEndpoint", "ec2:Describe*" ], "Resource": "*", "Effect": "Allow" } ] }

AWS CloudFormation テンプレートを使用したアクセス権限の付与

AWS CloudFormation は事前設定されたテンプレートを使用して、IAM ロールとポリシーを作成するプロセスを自動化します。AWS CloudFormation を使用して、EC2Rescue の自動化に必要な IAM ロールとポリシーを作成するには、次の手順を使用します。

EC2Rescue に必要な IAM ロールとポリシーを作成するには

  1. [スタックを起動] ボタンを選択します。このボタンは AWS CloudFormation コンソールを開き、[Specify an Amazon S3 template URL (Amazon S3 テンプレート URL の指定)] フィールドに EC2Rescue テンプレートの URL を入力します。

    注記

    [View] を選択してテンプレートを表示します。

    表示 作成する

    表示

  2. [次へ] を選択します。

  3. [Specify Details] ページの、[Stack Name] フィールドで、デフォルトの値を保持するか、独自の値を指定するかを選択します。[次へ] を選択します。

  4. [Options] ページでは、何も選択する必要はありません。[次へ] を選択します。

  5. [Review (確認)] ページで、下にスクロールして、[I acknowledge that AWS CloudFormation might create IAM resources] オプションを選択します。

  6. [Create] を選択します。

    AWS CloudFormation は、[CREATE_IN_PROGRESS] の状態を約 3 分間表示します。スタックを作成すると、ステータスは [CREATE_COMPLETE] に変わります。

  7. スタックリストで、先ほど作成したスタックの横にあるオプションを選択し、[Outputs] タブを選択します。

  8. [Value] をコピーします。これは AssumeRole の ARN です。自動化を実行するときに、この ARN を指定します。

自動化の実行

重要

次の自動化の実行では、到達不可能なインスタンスを停止します。インスタンスを停止すると、アタッチされたインスタンスストアボリュームのデータが失われます (存在する場合)。また、インスタンスを停止すると、Elastic IP が関連付けられていない場合、そのパブリック IP アドレスも変更されます。

AWSSupport-ExecuteEC2Rescue の自動化を実行するには

  1. https://console.aws.amazon.com/systems-manager/ で AWS Systems Manager コンソールを開きます。

  2. ナビゲーションペインで [自動化] を選択します。

    -または-

    AWS Systems Manager ホームページが最初に開く場合は、メニューアイコン ( ) を選択してナビゲーションペインを開き、[自動化] を選択します。

  3. [Execute automation] を選択します。

  4. [Automation document] セクションで、リストから [Owned by Me or Amazon] を選択します。

  5. ドキュメントリストで、[AWSSupport-ExecuteEC2Rescue] を選択します。ドキュメントの所有者は Amazon です。

  6. [Document details] セクションで、[Document version] が最大のデフォルトバージョンに設定されていることを確認します(例: [6 (default)])。

  7. Execution Mode (実行モード)] セクションで、[Simple execution (シンプルな実行)] を選択します。

  8. [Input parameters] セクションで、以下のパラメータを指定します。

    1. [UnreachableInstanceId] で、到達不可能なインスタンスの ID を指定します。

    2. インスタンスのトラブルシューティング時にオペレーティングシステムレベルのログを収集する場合は、[LogDestination] で Amazon S3 バケットを指定します。ログは、指定したバケットに自動的にアップロードされます。

    3. [EC2RescueInstanceType] で、EC2Rescue インスタンスのインスタンスタイプを指定します。デフォルトのインスタンスタイプは t2.small です。

    4. [SubnetId] で、到達不可能なインスタンスと同じアベイラビリティーゾーンの既存の VPC のサブネットを指定します。デフォルトでは、Systems Manager によって新しい VPC が作成されますが、必要に応じて既存の VPC のサブネットを指定できます。

      注記

      バケットまたはサブネット ID を指定するオプションが表示されない場合は、最新のデフォルトバージョンのドキュメントを使用していることを確認します。

    5. このトピックで以前に説明した CloudFormation 手順を使用してこの自動化用にロールを作成した場合は、CloudFormation コンソールからコピーした AssumeRole ARN を [AssumeRole] に指定します。

  9. [Execute automation] を選択します。

自動化により、ワークフローの一環としてバックアップ AMI が作成されます。自動化のワークフローで作成された他のすべてのリソースは自動的に削除されますが、この AMI はアカウントに残ります。AMI の名前は次の命名規則に従います。

バックアップ AMI: AWSSupport-EC2Rescue:UnreachableInstanceId

自動化の実行 ID 検索することでこの AMI を Amazon EC2 コンソールで見つけることができます。

このページの内容: