メニュー
Amazon Elastic Compute Cloud
Linux インスタンス用ユーザーガイド

高度なチュートリアル: Automation ドキュメントを作成する

このチュートリアルでは、カスタム Automation ドキュメントを作成して実行する方法を示します。Automation を実行すると、システムは以下のタスクを実行します。

  • 指定した AMI から Windows インスタンスを起動します。

  • Run Command を使用して、Windows 更新プログラムをインスタンスに適用するコマンドを実行します。

  • インスタンスを停止します。

  • 新しい Windows AMI を作成します。

  • Windows AMI にタグを付けます。

  • 元のインスタンスを終了します。

サンプル Automation ドキュメント

Automation は、JSON で記述された Systems Manager Automation ドキュメントを実行します。Automation ドキュメントには、ワークフローの実行時に実行されるアクションが含まれます。Systems Manager ドキュメントの詳細については、「Systems Manager ドキュメント」を参照してください。ドキュメントに追加できるアクションについては、「Automation ドキュメントのアクションのリファレンス」を参照してください。

サポートされているアクションを次に示します。

  • aws:runInstance: 指定した AMI ID に対して 1 つ以上のインスタンスを起動します。

  • aws:runCommand: リモートコマンド実行。SSM Run Command ドキュメントを実行します。

  • aws:invokeLambdaFunction: Automation ワークフローで外部ワーカー関数を実行できます。

  • aws:changeInstanceState: インスタンスの状態を stoppedterminated、または running に変更します。

  • aws:createImage: 実行中のインスタンスから AMI を作成します。

  • aws:deleteImage: AMI を削除します。

  • aws:createTags: EC2 および Systems Manager リソースにタグを付けます。

サンプル Automation ドキュメント内のこれらのアクションは以下の手順で表示できます。

Automation を使用して パッチを適用した AMI を作成するには

  1. 以下の情報を収集します。この情報は、この手順で後ほど指定します。

    • 更新する AMI のソース ID。ソース ID を見つける方法については、「Amazon EC2 コンソールを使用した Linux AMI の検索」を参照してください。

    • インスタンスでアクションを実行するためのアクセス許可を Systems Manager に与える AWS Identity and Access Management (IAM) インスタンスロール。詳細については、「Automation へのアクセスの設定」を参照してください。

    • Systems Manager がアクションを代行するために使用する Automation 用の IAM ロール。これは、 と呼ばれます。詳細については、「Automation へのアクセスの設定」を参照してください。

  2. 以下のサンプルドキュメントをメモ帳などのテキストエディターにコピーします。assumeRole の値を、Automation 用に IAM ロールを作成したときに先ほど作成したロール ARN に変更し、IamInstanceProfileName の値を、先ほど作成したロールの名前に変更します。ドキュメントをローカルドライブに patchWindowsAmi.json という名前で保存します。

    Copy
    { "description":"Systems Manager Automation Demo - Patch and Create a New AMI", "schemaVersion":"0.3", "assumeRole":"the role ARN you created", "parameters":{ "sourceAMIid":{ "type":"String", "description":"AMI to patch" }, "targetAMIname":{ "type":"String", "description":"Name of new AMI", "default":"patchedAMI-{{global:DATE_TIME}}" } }, "mainSteps":[ { "name":"startInstances", "action":"aws:runInstances", "timeoutSeconds":1200, "maxAttempts":1, "onFailure":"Abort", "inputs":{ "ImageId":"{{ sourceAMIid }}", "InstanceType":"m3.large", "MinInstanceCount":1, "MaxInstanceCount":1, "IamInstanceProfileName":"the name of the IAM role you created" } }, { "name":"installMissingWindowsUpdates", "action":"aws:runCommand", "maxAttempts":1, "onFailure":"Continue", "inputs":{ "DocumentName":"AWS-InstallMissingWindowsUpdates", "InstanceIds":[ "{{ startInstances.InstanceIds }}" ], "Parameters":{ "UpdateLevel":"Important" } } }, { "name":"stopInstance", "action":"aws:changeInstanceState", "maxAttempts":1, "onFailure":"Continue", "inputs":{ "InstanceIds":[ "{{ startInstances.InstanceIds }}" ], "DesiredState":"stopped" } }, { "name":"createImage", "action":"aws:createImage", "maxAttempts":1, "onFailure":"Continue", "inputs":{ "InstanceId":"{{ startInstances.InstanceIds }}", "ImageName":"{{ targetAMIname }}", "NoReboot":true, "ImageDescription":"AMI created by EC2 Automation" } }, { "name":"createTags", "action":"aws:createTags", "maxAttempts":1, "onFailure":"Continue", "inputs":{ "ResourceType":"EC2", "ResourceIds":[ "{{createImage.ImageId}}" ], "Tags":[ { "Key": "Generated By Automation", "Value": "{{automation:EXECUTION_ID}}" }, { "Key": "From Source AMI", "Value": "{{sourceAMIid}}" } ] } }, { "name":"terminateInstance", "action":"aws:changeInstanceState", "maxAttempts":1, "onFailure":"Continue", "inputs":{ "InstanceIds":[ "{{ startInstances.InstanceIds }}" ], "DesiredState":"terminated" } } ], "outputs":[ "createImage.ImageId" ] }
  3. AWS CLI をローカルマシンにダウンロードします。

  4. 以下のコマンドを編集し、ローカルマシン上の patchWindowsAmi.json ファイルへのパスを指定します。コマンドを実行して、必要な Automation ドキュメントを作成します。

    Copy
    aws ssm create-document --name "patchWindowsAmi" --content file:///Users/test-user/Documents/patchWindowsAmi.json --document-type Automation

    コマンドの進捗に関する情報が返されます。

    Copy
    { "DocumentDescription": { "Status": "Creating", "Hash": "bce98f80b89668b092cd094d2f2895f57e40942bcc1598d85338dc9516b0b7f1", "Name": "test", "Parameters": [ { "Type": "String", "Name": "sourceAMIid", "Description": "AMI to patch" }, { "DefaultValue": "patchedAMI-{{global:DATE_TIME}}", "Type": "String", "Name": "targetAMIname", "Description": "Name of new AMI" } ], "DocumentType": "Automation", "PlatformTypes": [ "Windows", "Linux" ], "DocumentVersion": "1", "HashType": "Sha256", "CreatedDate": 1488303738.572, "Owner": "809632081692", "SchemaVersion": "0.3", "DefaultVersion": "1", "LatestVersion": "1", "Description": "Systems Manager Automation Demo - Patch and Create a New AMI" } }
  5. 以下のコマンドを実行して、アクセス可能なドキュメントのリストを表示します。

    Copy
    aws ssm list-documents --document-filter-list key=Owner,value=Self

    以下のような情報が返されます。

    Copy
    { "DocumentIdentifiers":[ { "Name":" patchWindowsAmi", "PlatformTypes": [ ], "DocumentVersion": "5", "DocumentType": "Automation", "Owner": "12345678901", "SchemaVersion": "0.3" } ] }
  6. 以下のコマンドを実行して、patchWindowsAmi ドキュメントの詳細を表示します。

    Copy
    aws ssm describe-document --name patchWindowsAmi

    以下のような情報が返されます。

    Copy
    { "Document": { "Status": "Active", "Hash": "99d5b2e33571a6bb52c629283bca0a164026cd201876adf0a76de16766fb98ac", "Name": "patchWindowsAmi", "Parameters": [ { "DefaultValue": "ami-3f0c4628", "Type": "String", "Name": "sourceAMIid", "Description": "AMI to patch" }, { "DefaultValue": "patchedAMI-{{global:DATE_TIME}}", "Type": "String", "Name": "targetAMIname", "Description": "Name of new AMI" } ], "DocumentType": "Automation", "PlatformTypes": [ ], "DocumentVersion": "5", "HashType": "Sha256", "CreatedDate": 1478904417.477, "Owner": "12345678901", "SchemaVersion": "0.3", "DefaultVersion": "5", "LatestVersion": "5", "Description": "Automation Demo - Patch and Create a New AMI" } }
  7. 以下のコマンドを実行することで、patchWindowsAmi ドキュメントを実行し、Automation ワークフローを実行します。このコマンドには、2 つの入力パラメータとして、パッチ適用先の AMI の ID と新しい AMI の名前を指定します。以下のコマンド例では、最新の EC2 AMI を使用して、適用する必要があるパッチの数を最小限に抑えています。このコマンドを複数回実行する場合は、targetAMIname に一意の値を指定する必要があります。AMI 名は一意であることが必要です。

    Copy
    aws ssm start-automation-execution --document-name="patchWindowsAmi" --parameters sourceAMIid="ami-bd3ba0aa"

    コマンドによって実行 ID が返されます。この ID をクリップボードにコピーします。この ID を使用して、ワークフローのステータスを表示します。

    Copy
    { "AutomationExecutionId": "ID" }

    EC2 コンソールで、ワークフローのステータスをモニタリングできます。コンソールで、新しいインスタンスが起動中であることを確認します。インスタンスの起動が完了すると、Run Command アクションが実行されたことを確認できます。Run Command の実行が完了すると、AMI イメージのリストに新しい AMI が表示されます。

  8. CLI を使用してワークフローの実行を表示するには、以下のコマンドを実行します。

    Copy
    aws ssm describe-automation-executions
  9. 実行の進捗の詳細を表示するには、以下のコマンドを実行します。

    Copy
    aws ssm get-automation-execution --automation-execution-id ID

注記

適用されるパッチの数に応じて、このサンプルワークフローで実行される Windows パッチ適用プロセスは、完了までに 30 分以上かかることがあります。