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

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

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

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

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

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

仕組み

Automation と AWSSupport-ExecuteEC2Rescue ランブックによるインスタンスのトラブルシューティングは、次のように機能します。

  • 到達不能インスタンスの ID を指定し、ランブックを起動します。

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

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

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

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

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

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

開始する前に

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

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

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

  • オプションで、オートメーション用の AWS Identity and Access Management (IAM) ロールを作成して指定できます。このロールを指定しない場合、自動化はそれを実行したユーザーのコンテキストで実行されます。

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

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

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

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

注記

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

AWSSupport-EC2Rescue の IAM ポリシー

アカウント ID をユーザー自身の情報に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "lambda:InvokeFunction", "lambda:DeleteFunction", "lambda:GetFunction" ], "Resource": "arn:aws:lambda:*: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::account ID:role/AWSSupport-EC2Rescue-*", "arn:aws:iam::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 ロールとポリシーを作成するプロセスを自動化します。 を使用して、EC2Rescue の Automation に必要な IAM ロールとポリシーを作成するには、次の手順を使用します AWS CloudFormation

EC2Rescue に必要な IAM ロールとポリシーを作成するには
  1. AWSSupport-EC2RescueRole.zip をダウンロードし、AWSSupport-EC2RescueRole.json ファイルをローカルマシン上のディレクトリに展開します。

  2. AWS アカウント が特別なパーティションにある場合は、テンプレートを編集して ARN 値をパーティションの値に変更します。

    例えば、中国リージョンの場合は、arn:aws のすべてのケースを arn:aws-cn に変更します。

  3. にサインイン AWS Management Console し、https://console.aws.amazon.com/cloudformation で AWS CloudFormation コンソールを開きます。

  4. [スタックの作成] を選択し、[新しいリソースの使用 (標準)] を選択します。

  5. [スタックの作成] ページの [前提条件 - テンプレートの準備] で、[テンプレートの準備完了] を選択します。

  6. [テンプレートの指定] で、[テンプレートファイルのアップロード] を選択します。

  7. [ファイルを選択] を選択し、展開したディレクトリから AWSSupport-EC2RescueRole.json ファイルを参照して選択します。

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

  9. [スタックの詳細の指定] ページの [スタック名] フィールドに、このスタックを識別する名前を入力し、[次へ] を選択します。

  10. (オプション) [タグ] 領域で、1 つ以上のタグキーの名前と値のペアをスタックに適用します。

    タグは、リソースに割り当てるオプションのメタデータです。タグを使用すると、目的、所有者、環境などのさまざまな方法でリソースを分類できます。たとえば、スタックにタグを付けると、スタックが実行するタスクのタイプ、関連するターゲットまたはその他のリソースのタイプ、およびスタックが実行される環境を識別できます。

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

  12. レビューページでスタックの詳細を確認し、下にスクロールして、IAM リソースを作成する AWS CloudFormation 可能性がある I acknowledge を選択します。

  13. [スタックの作成] を選択します。

    AWS CloudFormation は、CREATE_IN_PROGRESS のステータスを数分表示します。スタックを作成すると、ステータスは [CREATE_COMPLETE] に変わります。更新アイコンを選択して、作成プロセスのステータスを確認することもできます。

  14. [スタック] リストで、先ほど作成したスタックのオプションボタンを選択し、[出力] タブを選択します。

  15. [値] を書き留めます。は の ARN です AssumeRole。この ARN は、手順 自動化の実行 でオートメーションを実行するときに指定します。

自動化の実行

重要

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

AWSSupport-ExecuteEC2Rescue Automation を実行するには
  1. https://console.aws.amazon.com/systems-manager/ で AWS Systems Manager コンソールを開きます。

  2. ナビゲーションペインで [オートメーション] を選択します。

    -または-

    AWS Systems Manager ホームページが最初に開いたら、メニューアイコン (      The menu icon   ) を選択してナビゲーションペインを開き、オートメーション を選択します。

  3. [オートメーションを実行] を選択します。

  4. オートメーションドキュメント] セクションで、リストから [Amazon が所有] を選択します。

  5. ランブックリストで、AWSSupport-ExecuteEC2Rescue のカード内のボタンを選択し、[次へ] を選択します。

  6. [オートメーションドキュメントの実行] ページで、[シンプルな実行] を選択します。

  7. [ドキュメント詳細] セクションで、[ドキュメントバージョン] が最大のデフォルトバージョンに設定されていることを確認します。例えば、[$DEFAULT] または [3 (デフォルト)] のように指定します。

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

    1. にはUnreachableInstanceId、接続できないインスタンスの ID を指定します。

    2. (オプション) EC2RescueInstanceType では、EC2Rescue インスタンスのインスタンスタイプを指定します。デフォルトのインスタンスタイプは t2.medium です。

    3. の場合AutomationAssumeRole、このトピックで前述した手順を使用して AWS CloudFormation このオートメーションのロールを作成した場合は、コンソールで AssumeRole AWS CloudFormation 作成した の ARN を選択します。

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

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

      注記

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

  9. (オプション) [タグ] 領域で、オートメーションを識別するためにタグキーの名前と値のペアを 1 つ以上適用します (例: Key=Purpose,Value=EC2Rescue)。

  10. [実行] を選択します。

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

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

この AMI は、Automation の実行 ID で検索することで、Amazon EC2 コンソールで見つけることができます。