AWSSupport-StartEC2RescueWorkflow - AWS Systems Manager オートメーションランブックリファレンス

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

AWSSupport-StartEC2RescueWorkflow

説明

AWSSupport-StartEC2RescueWorkflow ランブックは、指定された base64 エンコードのスクリプト (Bash または Powershell) を、インスタンスをレスキューするために作成されたヘルパーインスタンス上で実行します。インスタンスのルートボリュームは、インスタンスとも呼ばれるヘルパーインスタンスにアタッチおよびマウントされますEC2Rescue。インスタンスが Windows の場合、Powershell スクリプトを指定します。それ以外の場合は、Bash を使用します。このランブックでは、スクリプトで使用するための、いくつかの環境変数が設定されます。環境変数には、入力した入力情報とオフラインルートボリュームに関する情報が含まれています。オフラインボリュームはすでにマウントされており、すぐに使用できます。たとえば、Desired State Configuration ファイルをオフラインの Windows ルートボリュームに保存するか、または chroot をオフラインの Linux ルートボリュームに保存して、オフライン修復を実行することができます。

このオートメーションを実行する (コンソール)

重要

Marketplace Amazon マシンイメージ (AMIs) から作成された Amazon EC2インスタンスは、このオートメーションではサポートされていません。

追加情報

Powershell または Bash を使用し、スクリプトを Base64 にエンコードにすることができます。Powershell:

[System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes([System.IO.File]::ReadAllText('PATH_TO_FILE')))

Bash:

base64 PATH_TO_FILE

以下に示しているのは、ターゲットの OS に応じて、オフラインスクリプトで使用できる環境変数のリストです

Windows :

可変 説明 値の例

$env:EC2RESCUEACCOUNT_ID

{{ グローバル:ACCOUNT_ID }}

123456789012

$env:EC2RESCUE_DATE

{{ グローバル:DATE }}

2018-09-07

$env:EC2RESCUE_DATE_TIME

{{ グローバル:DATE_TIME }}

2018-09-07_18.09.59

$env:EC2RESCUE_EC2RW_DIR

EC2Rescue for Windows のインストールパス

C:\Program Files\Amazon\EC2Rescue

$env:EC2RESCUE_EC2RW_DIR

EC2Rescue for Windows のインストールパス

C:\Program Files\Amazon\EC2Rescue

$env:EC2RESCUEEXECUTION_ID

{{ オートメーション:EXECUTION_ID }}

7ef8008e-219b-4aca-8bb5-65e2e898e20b

$env:EC2RESCUE_OFFLINE_CURRENTCONTROL__SET

オフラインの Windows Current Control Set のパス

HKLM:\AWSTempSystem\ControlSet001

$env:EC2RESCUE_OFFLINE_DRIVE

オフラインの Windows ドライブ文字

D:\

$env:EC2RESCUE_OFFLINEEBS__DEVICE

オフラインルートボリュームEBSデバイス

xvdf

$env:EC2RESCUE_OFFLINEKERNEL__VER

オフラインの Windows カーネルバージョン

6.1.7601.24214

$env:EC2RESCUEOFFLINE_OS_ARCHITECTURE

オフラインの Windows アーキテクチャ

AMD64

$env:EC2RESCUEOFFLINE_OS_CAPTION

オフラインの Windows キャプション

Windows Server 2008 R2 Datacenter

$env:EC2RESCUEOFFLINE_OS_TYPE

オフラインの Windows OS タイプ

[サーバー]

$env:EC2RESCUE_OFFLINE_PROGRAMFILES__DIR

オフラインの Windows Program files のディレクトリパス

D:\Program Files

$env:EC2RESCUEOFFLINE_PROGRAM_FILES_X86_DIR

オフラインの Windows Program files (x86) のディレクトリパス

D:\Program Files (x86)

$env:EC2RESCUE_OFFLINEREGISTRY__DIR

オフラインの Windows レジストリのディレクトリパス

D:\Windows\System32\config

$env:EC2RESCUE_OFFLINESYSTEM__ROOT

オフラインの Windows システムのルートディレクトリパス

D:\Windows

$env:EC2RESCUE_REGION

{{ グローバル:REGION }}

us-west-1

$env:EC2RESCUE_S3_BUCKET

{{ S3BucketName }}

amzn-s3-demo-bucket

$env:EC2RESCUE_S3_PREFIX

{{ S3Prefix }}

myprefix/

$env:EC2RESCUE_SOURCE_INSTANCE

{{ InstanceId }}

i-abcdefgh123456789

$script:EC2RESCUE_OFFLINEWINDOWS__INSTALL

オフラインの Windows インストールメタデータ

Customer Powershell Object

Linux:

可変 説明 値の例

EC2RESCUEACCOUNT__ID

{{ グローバル:ACCOUNT_ID }}

123456789012

EC2RESCUE_DATE

{{ グローバル:DATE }}

2018-09-07

EC2RESCUE_DATE_TIME

{{ グローバル:DATE_TIME }}

2018-09-07_18.09.59

EC2RESCUE_EC2RL_DIR

EC2Rescue for Linux のインストールパス

/usr/local/ec2rl-1.1.3

EC2RESCUEEXECUTION__ID

{{ オートメーション:EXECUTION_ID }}

7ef8008e-219b-4aca-8bb5-65e2e898e20b

EC2RESCUE_OFFLINE_DEVICE

オフラインのデバイス名

/dev/xvdf1

EC2RESCUE_OFFLINE_EBS_DEVICE

オフラインルートボリュームEBSデバイス

/dev/sdf

EC2RESCUE_OFFLINE_SYSTEM_ROOT

オフラインのルートボリュームのマウントポイント

/mnt/mount

EC2RESCUE_PYTHON

Python バージョン

python2.7

EC2RESCUE_REGION

{{ グローバル:REGION }}

us-west-1

EC2RESCUE_S3_BUCKET

{{ S3BucketName }}

amzn-s3-demo-bucket

EC2RESCUE_S3_PREFIX

{{ S3Prefix }}

myprefix/

EC2RESCUE_SOURCE_INSTANCE

{{ InstanceId }}

i-abcdefgh123456789

ドキュメントタイプ

Automation

[所有者]

Amazon

[Platforms] (プラットフォーム)

Linux、macOS、Windows

パラメータ

  • AMIPrefix

    型: 文字列

    デフォルト: AWSSupport-EC2Rescue

    説明: (オプション) バックアップAMI名のプレフィックス。

  • AutomationAssumeRole

    型: 文字列

    説明: (オプション) Systems Manager Automation がユーザーに代わってアクションを実行できるようにする () ロールARNの AWS Identity and Access Management Amazon リソースネーム (IAM)。ロールを指定しない場合、Systems Manager Automation はこのランブックを開始するユーザーのアクセス許可を使用します。

  • CreatePostEC2RescueBackup

    型: 文字列

    有効な値: true | false

    デフォルト: false

    説明: (オプション) スクリプトの実行後に を起動する前に、 AMIを InstanceId trueに設定する。AMI は、自動化が完了した後も保持されます。へのアクセスを保護するかAMI、削除するのはお客様の責任です。

  • CreatePreEC2RescueBackup

    型: 文字列

    有効な値: true | false

    デフォルト: false

    説明: (オプション) スクリプトを実行する前に を trueに設定して AMI InstanceIdを作成します。AMI は、自動化が完了した後も保持されます。へのアクセスを保護するかAMI、削除するのはお客様の責任です。

  • EC2RescueInstanceType

    型: 文字列

    有効な値: t2.small | t2.medium | t2.large

    デフォルト: t2.small

    説明: (オプション) EC2インスタンスのEC2Rescueインスタンスタイプ。

  • InstanceId

    型: 文字列

    説明: (必須) EC2インスタンスの ID。IMPORTANT: AWS Systems Manager Automation はこのインスタンスを停止します。インスタンスストアボリュームに保存されているデータは失われます。Elastic IP を使用していない場合、パブリック IP アドレスが変わります。

  • OfflineScript

    型: 文字列

    説明: (必須) ヘルパーインスタンスに対して実行する Base64 エンコードのスクリプト。ソースインスタンスが Linux の場合は Bash を使用し、Windows PowerShell の場合は Bash を使用します。

  • S3BucketName

    型: 文字列

    説明: (オプション) トラブルシューティングのログをアップロードするアカウントの S3 バケット名。収集されたログにアクセスする必要がないユーザーへの不必要な読み取り/書き込みアクセス権限をバケットポリシーに付与しないようにします。

  • S3Prefix

    型: 文字列

    デフォルト: AWSSupport-EC2Rescue

    説明: (オプション) S3 ログのプレフィックス。

  • SubnetId

    型: 文字列

    デフォルト: SelectedInstanceSubnet

    説明: (オプション) EC2Rescueインスタンスのサブネット ID。デフォルトでは、指定されたインスタンスが存在しているのと同じサブネットが使用されます。IMPORTANT: カスタムサブネットを指定する場合は、 と同じアベイラビリティーゾーンに存在し InstanceId、SSMエンドポイントへのアクセスを許可する必要があります。

  • UniqueId

    型: 文字列

    デフォルト: {{ automation:EXECUTION_ID }}

    説明: (オプション) オートメーションの一意の識別子。

必要なIAMアクセス許可

AutomationAssumeRole パラメータでは、ランブックを正常に使用するために、次のアクションが必要です。

オートメーションを実行するユーザーには、mazonSSMAutomationロール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" } ] }

ドキュメントステップ

  1. aws:executeAwsApi - 提供されたインスタンスを記述します

  2. aws:executeAwsApi - 提供されたインスタンスのルートボリュームを記述します

  3. aws:assertAwsResourceProperty - ルートボリュームのデバイスタイプが であることを確認します EBS

  4. aws:assertAwsResourceProperty - ルートボリュームが暗号化されていないことを確認します

  5. aws:assertAwsResourceProperty - 指定するサブネット ID を確認します

    1. (現在のインスタンスサブネットを使用) - *SubnetId = SelectedInstanceSubnet* の場合は、 を実行してEC2Rescue CloudFormationスタックaws:createStackをデプロイします。

    2. (新しい を作成するVPC) - *SubnetId = CreateNewVPC* の場合は、 aws:createStackを実行してEC2Rescue CloudFormationスタックをデプロイします。

    3. (カスタムサブネットの使用) - それ以外の場合:

      aws:assertAwsResourceProperty - 指定されたサブネットが、指定されたインスタンスと同じアベイラビリティーゾーンにあることを確認します

      aws:createStack - EC2Rescue CloudFormationスタックをデプロイする

  6. aws:invokeLambdaFunction - 追加入力の検証を実行します

  7. aws:executeAwsApi - EC2Rescue CloudFormation スタックを更新してEC2Rescueヘルパーインスタンスを作成する

  8. aws:waitForAwsResourceProperty - EC2Rescue CloudFormation スタックの更新が完了するまで待ちます。

  9. aws:executeAwsApi - EC2Rescueヘルパーインスタンス ID を取得するためのEC2Rescue CloudFormation スタック出力を記述する

  10. aws:waitForAwsResourceProperty - EC2Rescueヘルパーインスタンスがマネージドインスタンスになるのを待ちます

  11. aws:changeInstanceState - 指定されたインスタンスを停止します

  12. aws:changeInstanceState - 指定されたインスタンスを停止します

  13. aws:changeInstanceState - 指定されたインスタンスを強制停止します

  14. aws:assertAwsResourceProperty - 入力値を確認する CreatePreEC2RescueBackup

    1. (事前バックアップの作成) -EC2Rescue *CreatePreEC2RescueBackup = true* の場合

    2. aws:executeAwsApi - 提供されたインスタンスのAMIバックアップを作成する

    3. aws:createTags - AMIバックアップにタグを付ける

  15. aws:runCommand - EC2RescueヘルパーインスタンスEC2Rescueに をインストールする

  16. aws:executeAwsApi - 指定されたインスタンスからルートボリュームをデタッチします

  17. aws:assertAwsResourceProperty - 指定されたインスタンスのプラットフォームを確認します

    1. (インスタンスが Windows の場合):

      aws:executeAwsApi - ルートボリュームを *xvdf* としてEC2Rescueヘルパーインスタンスにアタッチする

      aws:sleep - 10 秒間スリープします

      aws:runCommand - Powershell で提供されるオフラインスクリプトを実行します

    2. (インスタンスが Linux の場合):

      aws:executeAwsApi - ルートボリュームを */dev/sdf* としてEC2Rescueヘルパーインスタンスにアタッチします。

      aws:sleep - 10 秒間スリープします

      aws:runCommand - Bash で提供されるオフラインスクリプトを実行します

  18. aws:changeInstanceState - EC2Rescueヘルパーインスタンスを停止する

  19. aws:changeInstanceState - EC2Rescueヘルパーインスタンスを強制停止する

  20. aws:executeAwsApi - EC2Rescueヘルパーインスタンスからルートボリュームをデタッチする

  21. aws:executeAwsApi - 指定されたインスタンスへ戻りルートボリュームをアタッチします

  22. aws:assertAwsResourceProperty - 入力値を確認する CreatePostEC2RescueBackup

    1. (ポストEC2Rescueバックアップの作成) - *CreatePostEC2RescueBackup = true* の場合

    2. aws:executeAwsApi - 提供されたインスタンスのAMIバックアップを作成する

    3. aws:createTags - AMIバックアップにタグを付ける

  23. aws:executeAwsApi - 提供されたインスタンスのルートボリュームの終了状態での最初の削除を復元します

  24. aws:changeInstanceState - 指定されたインスタンスの初期状態を復元します (実行中/停止中)

  25. aws:deleteStack - EC2Rescue CloudFormation スタックを削除する

[Outputs] (出力)

runScriptForLinux.Output

runScriptForWindows.Output

preScriptBackup.ImageId

postScriptBackup.ImageId