

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

# `AWSSupport-StartEC2RescueWorkflow`
<a name="automation-awssupport-startec2rescueworkflow"></a>

 **説明** 

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

[このオートメーションを実行する (コンソール)](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-StartEC2RescueWorkflow)

**重要**  
Marketplace Amazon マシンイメージ (AMI) から作成された 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:EC2RESCUE\_ACCOUNT\_ID | {{ global:ACCOUNT\_ID }} | 123456789012 | 
| $env:EC2RESCUE\_DATE | {{ global:DATE }} | 2018-09-07 | 
| $env:EC2RESCUE\_DATE\_TIME | {{ global:DATE\_TIME }} | 2018-09-07\_18.09.59 | 
| $env:EC2RESCUE\_EC2RW\_DIR | Windows インストールパスの EC2Rescue | C:\\Program Files\\Amazon\\EC2Rescue | 
| $env:EC2RESCUE\_EC2RW\_DIR | Windows インストールパスの EC2Rescue | C:\\Program Files\\Amazon\\EC2Rescue | 
| $env:EC2RESCUE\_EXECUTION\_ID | {{ automation:EXECUTION\_ID }} | 7ef8008e-219b-4aca-8bb5-65e2e898e20b | 
| $env:EC2RESCUE\_OFFLINE\_CURRENT\_CONTROL\_SET | オフラインの Windows Current Control Set のパス | `HKLM:\AWSTempSystem\ControlSet001` | 
| $env:EC2RESCUE\_OFFLINE\_DRIVE | オフラインの Windows ドライブ文字 | D:\\ | 
| $env:EC2RESCUE\_OFFLINE\_EBS\_DEVICE | オフラインのルートボリューム EBS デバイス | xvdf | 
| $env:EC2RESCUE\_OFFLINE\_KERNEL\_VER | オフラインの Windows カーネルバージョン | 6.1.7601.24214 | 
| $env:EC2RESCUE\_OFFLINE\_OS\_ARCHITECTURE | オフラインの Windows アーキテクチャ | AMD64 | 
| $env:EC2RESCUE\_OFFLINE\_OS\_CAPTION | オフラインの Windows キャプション | Windows Server 2008 R2 Datacenter | 
| $env:EC2RESCUE\_OFFLINE\_OS\_TYPE | オフラインの Windows OS タイプ | サーバー | 
| $env:EC2RESCUE\_OFFLINE\_PROGRAM\_FILES\_DIR | オフラインの Windows Program files のディレクトリパス | D:\\Program Files | 
| $env:EC2RESCUE\_OFFLINE\_PROGRAM\_FILES\_X86\_DIR | オフラインの Windows Program files (x86) のディレクトリパス | D:\\Program Files (x86) | 
| $env:EC2RESCUE\_OFFLINE\_REGISTRY\_DIR | オフラインの Windows レジストリのディレクトリパス | D:\\Windows\\System32\\config | 
| $env:EC2RESCUE\_OFFLINE\_SYSTEM\_ROOT | オフラインの Windows システムのルートディレクトリパス | D:\\Windows | 
| $env:EC2RESCUE\_REGION | {{ global: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\_OFFLINE\_WINDOWS\_INSTALL | オフラインの Windows インストールメタデータ | Customer Powershell Object | 

Linux:


****  

| 可変 | 説明 | 値の例 | 
| --- | --- | --- | 
| EC2RESCUE\_ACCOUNT\_ID | {{ global:ACCOUNT\_ID }} | 123456789012 | 
| EC2RESCUE\_DATE | {{ global:DATE }} | 2018-09-07 | 
| EC2RESCUE\_DATE\_TIME | {{ global:DATE\_TIME }} | 2018-09-07\_18.09.59 | 
| EC2RESCUE\_EC2RL\_DIR | Linux インストールパスの EC2Rescue | /usr/local/ec2rl-1.1.3 | 
| EC2RESCUE\_EXECUTION\_ID | {{ automation: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 | {{ global:REGION }} | us-west-1 | 
| EC2RESCUE\_S3\_BUCKET | {{ S3BucketName }} | amzn-s3-demo-bucket | 
| EC2RESCUE\_S3\_PREFIX | {{ S3Prefix }} | myprefix/ | 
| EC2RESCUE\_SOURCE\_INSTANCE | {{ InstanceId }} | i-abcdefgh123456789 | 

**ドキュメントタイプ**

オートメーション

**[所有者]**

Amazon

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

Linux、macOS、Windows

**パラメータ**
+ AMIPrefix

  タイプ: 文字列

  デフォルト: `AWSSupport-EC2Rescue`

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

  タイプ: 文字列

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

  タイプ: 文字列

  有効な値: true \| false

  デフォルト: false

  説明: (オプション) スクリプトを開始する前に、`true` に設定して、InstanceId の AMI を作成します。AMI は、自動化が完了した後も維持されます。AMI へのアクセスを保護したり、削除したりするのはサービス利用者の責任となります。
+ CreatePreEC2RescueBackup

  タイプ: 文字列

  有効な値: true \| false

  デフォルト: false

  説明: (オプション) スクリプトを実行する前に、`true` に設定して InstanceId の AMI を作成します。AMI は、自動化が完了した後も維持されます。AMI へのアクセスを保護したり、削除したりするのはサービス利用者の責任となります。
+ EC2RescueInstanceType

  タイプ: 文字列

  有効な値: t2.small \| t2.medium \| t2.large \| t3.small \| t3.medium \| t3.large \| i3.large

  デフォルト: t3.medium

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

  タイプ: 文字列

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

  タイプ: 文字列

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

  タイプ: 文字列

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

  タイプ: 文字列

  デフォルト: `AWSSupport-EC2Rescue`

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

  タイプ: 文字列

  デフォルト: SelectedInstanceSubnet

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

  タイプ: 文字列

  デフォルト: {{ automation:EXECUTION\_ID }}

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

**必要な IAM アクセス許可**

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

オートメーションを実行するユーザーには [**AmazonSSMAutomationRole**] IAM 管理ポリシーがアタッチされていることが推奨されます。そのポリシー以外にも、ユーザーには次のものが必要です。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "lambda:InvokeFunction",
                "lambda:DeleteFunction",
                "lambda:GetFunction"
            ],
            "Resource": "arn:aws:lambda:*:{{111122223333}}: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::{{111122223333}}:role/AWSSupport-EC2Rescue-*",
                "arn:aws:iam::{{111122223333}}: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` - 提供されたインスタンスを記述します

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

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

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

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

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

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

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

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

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

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

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

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

1. `aws:executeAwsApi` - EC2Rescue ヘルパーインスタンス ID を取得するための EC2Rescue CloudFormation スタック出力を表示します

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

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

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

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

1. `aws:assertAwsResourceProperty` - CreatePreEC2RescueBackup の入力値を確認します

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

   1. `aws:executeAwsApi` - 指定されたインスタンスの AMI バックアップを作成します

   1. `aws:createTags` - AMI バックアップにタグを付けます

1. `aws:runCommand` - EC2Rescue ヘルパーインスタンスに EC2Rescue をインストールします

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

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

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

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

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

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

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

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

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

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

1. `aws:changeInstanceState` - EC2Rescue ヘルパーインスタンスを停止します

1. `aws:changeInstanceState` - EC2Rescue ヘルパーインスタンスを強制停止します

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

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

1. `aws:assertAwsResourceProperty` - CreatePostEC2RescueBackup の入力値を確認します

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

   1. `aws:executeAwsApi` - 指定されたインスタンスの AMI バックアップを作成します

   1. `aws:createTags` - AMI バックアップにタグを付けます

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

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

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

 **[出力] ** 

runScriptForLinux.Output

runScriptForWindows.Output

preScriptBackup.ImageId

postScriptBackup.ImageId