AWS Systems Manager
ユーザーガイド

Windows AMI にパッチを適用する

AWS-UpdateWindowsAmi ドキュメントでは、JSON あるいは YAML のワークフローを記述することなく、Amazon Windows AMI のイメージメンテナンスタスクを自動化することができます。このドキュメントは Windows Server 2008 R2 以降でサポートされています。AWS-UpdateWindowsAmi ドキュメントを使用して次のタイプのタスクを実行できます。

  • すべての Windows 更新プログラムをインストールし、Amazon ソフトウェアをアップグレードする (デフォルトの動作)。

  • 特定の Windows 更新プログラムをインストールし、Amazon ソフトウェアをアップグレードする。

  • スクリプトを使用して AMI をカスタマイズする。

開始する前に

自動化ドキュメントで作業を開始する前に、ロールを設定し、必要に応じて自動化用に CloudWatch Events を設定します。詳細については、「自動化の使用を開始する」を参照してください。

注記

SSM エージェント の更新は、通常、リージョン別に異なる時間で展開されます。AMI をカスタマイズまたは更新する際、作業しているリージョンで公開されているソース AMI のみを使用してください。これは、そのリージョンでリリースされている最新の SSM エージェント を使用していることを確実にし、互換性の問題を防ぎます。

AWS-UpdateWindowsAmi ドキュメントは、次の入力パラメータを受け付けます。

パラメータ タイプ 説明

SourceAmiId

文字列

(必須) ソース AMI ID。Systems Manager パラメータストアのパブリックパラメータを指定して、最新の Windows Server AMI ID を自動的に参照できます。詳細については、「AWS Systems Manager パラメータストア を使用して、最新の Windows AMI ID をクエリする」を参照してください。

IamInstanceProfileName

文字列

(必須) 自動化の使用を開始する で作成した AWS Identity and Access Management (IAM) インスタンスプロファイルのロールの名前。インスタンスプロファイルのロールは、コマンドの実行またはサービスの開始や停止など、インスタンスでアクションを実行するための自動化のアクセス許可を付与します。自動化ドキュメントは、インスタンスプロファイルのロールの名前のみ使用します。Amazon リソースネーム (ARN) を指定すると、自動化の実行は失敗します。

AutomationAssumeRole

文字列

(必須) 自動化の使用を開始する で作成した IAM サービスロールの名前。サービスロール (ロールの継承とも呼ばれます) は、自動化が IAM ロールを引き受け、代わりにアクションを実行するアクセス許可を与えます。たとえば、サービスロールを使用すると、自動化ドキュメントで aws:createImage アクションを実行するとき、Automation で新しい AMI を作成できます。このパラメータには、完全な ARN を指定する必要があります。

TargetAmiName

文字列

(オプション) 作成後の AMI の新しい名前。デフォルト名は、ソース AMI ID および作成日時を含む、システム生成文字列です。

InstanceType

文字列

(オプション) ワークスペースホストとして起動するインスタンスの種類。インスタンスタイプは、リージョンによって異なります。デフォルトのタイプは、t2.medium です。

PreUpdateScript

文字列

(任意) AMI を更新する前に実行するスクリプト。自動化ドキュメントに、またはパラメータとして実行時にスクリプトを入力します。

PostUpdateScript

文字列

(任意) AMI を更新した後に実行するスクリプト。自動化ドキュメントに、またはパラメータとして実行時にスクリプトを入力します。

IncludeKbs

文字列

(任意) 含める Microsoft Knowledge Base (KB) 記事 ID を 1 つ以上指定します。コンマ区切り値を使って複数の ID をインストールできます。有効な形式: KB9876543 または 9876543。

ExcludeKbs

文字列

(任意) 除外する Microsoft Knowledge Base (KB) 記事 ID を 1 つ以上指定します。コンマ区切り値を使って複数の ID を除外できます。有効な形式: KB9876543 または 9876543。

カテゴリ

文字列

(任意) 1 つ以上の更新カテゴリを指定します。カンマ区切り値を使ってカテゴリをフィルタできます。オプション: 重要な更新プログラム、セキュリティ更新プログラム、定義ファイルの更新、更新プログラムのロールアップ、Service Pack、ツール、更新、またはドライバー。有効な形式には、「重要なアップデート」といった単一のエントリが含まれます。または、カンマ区切りのリストを指定できます。たとえば、重要な更新プログラム,セキュリティ更新プログラム,定義ファイルの更新となります。

SeverityLevels

文字列

(任意) 更新と関連付けられた MSRC 重要度レベルを 1 つ以上指定します。カンマ区切り値を使って重要度をフィルタできます。オプション: 非常事態、重要、低、中、または指定しない。有効な形式には、「非常事態」といった単一のエントリが含まれます。または、カンマ区切りリストを指定できます: 非常事態,重要,低。

自動化のステップ

AWS-UpdateWindowsAmi ドキュメントには、デフォルトでは、次の自動化のステップが含まれます。

ステップ 1: launchInstance (aws:runInstances アクション)

このステップは、指定された SourceAmiID の IAM インスタンスプロファイルロールでインスタンスを起動します。

ステップ 2: runPreUpdateScript (aws:runCommand アクション)

このステップでは、更新がインストールされる前に実行される文字列としてスクリプトを指定できます。

ステップ 3: updateEC2Config (aws:runCommand アクション)

このステップは、AWS-InstallPowerShellModule 公開ドキュメントを使用して AWS 公開 PowerShell モジュールをダウンロードします。Systems Manager は SHA-256 ハッシュを使用してモジュールの整合性を検証します。Systems Manager はその次にオペレーティングシステムを確認して、EC2Config または EC2Launch のどちらを更新するかを判断します。EC2Config は Windows Server 2008 R2 から Windows Server 2012 R2 で実行されます。EC2Launch は Windows Server 2016 で実行されます。

ステップ 4: updateSSMAgent (aws:runCommand アクション)

このステップでは、AWS-UpdateSSMAgent 公開ドキュメントを使用して SSM エージェント を更新します。

ステップ 5: updateAWSPVDriver (aws:runCommand アクション)

このステップでは、AWS-ConfigureAWSPackage 公開ドキュメントを使用して AWS PV ドライバを更新します。

ステップ 6: updateAwsEnaNetworkDriver (aws:runCommand アクション)

このステップでは、AWS-ConfigureAWSPackage 公開ドキュメントを使用して AWS ENA Network ドライバを更新します。

ステップ 7: installWindowsUpdates (aws:runCommand アクション)

このステップでは、AWS-InstallWindowsUpdates 公開ドキュメントを使用して Windows 更新プログラムをインストールします。デフォルトでは、Systems Manager は不足している更新を検索し、インストールします。次のパラメータのいずれかを指定することで、デフォルトの動作を変更できます: IncludeKbsExcludeKbsCategories、またはSeverityLevels

ステップ 8: runPostUpdateScript (aws:runCommand アクション)

このステップでは、更新がインストールされた後に実行される文字列としてスクリプトを指定することができます。

ステップ 9: runSysprepGeneralize (aws:runCommand アクション)

このステップは、AWS-InstallPowerShellModule 公開ドキュメントを使用して AWS 公開 PowerShell モジュールをダウンロードします。Systems Manager は SHA-256 ハッシュを使用してモジュールの整合性を検証します。Systems Manager はその次に、AWS がサポートする方法を使用して EC2Launch (Windows Server 2016) または EC2Config (Windows Server 2008 R2 から 2012 R2) に sysprep を実行します。

ステップ 10: stopInstance (aws:changeInstanceState アクション)

このステップでは、更新されたインスタンスを停止します。

ステップ 11: createImage (aws:createImage アクション)

このステップでは、ソース ID、および作成時刻にリンクするわかりやすい名前の新しい AMI を作成します。例: 「{{SourceAmiId}} から {{global:DATE_TIME}} に EC2 Automation によって生成された AMI」。ここで DATE_TIME および SourceID は、自動化の変数を表します。

ステップ 12: TerminateInstance (aws:changeInstanceState アクション)

このステップでは、実行中のインスタンスを終了して実行をクリーンアップします。

出力

このセクションでは、任意のパラメータの様々なステップや値の出力を、自動化の出力として指定できます。デフォルトでは、出力は、実行によって作成された更新済みの Windows AMI の ID です。

注記

デフォルトでは、自動化が AWS-UpdateWindowsAmi ドキュメントを実行して一時インスタンスを作成すると、システムはデフォルト default VPC (172.30.0.0/16) を使用します。デフォルト VPC を削除した場合、次のエラーが発生します。

VPC not defined 400

この問題を解決するには、AWS-UpdateWindowsAmi ドキュメントのコピーを作成し、サブネット ID を指定する必要があります。詳細については、VPC not defined 400 を参照してください。

自動化を使用してパッチを適用した Windows AMI を作成するには

  1. まだ AWS CLI をインストールして設定していない場合は、インストールして設定します。

    詳細については、「AWS CLI をインストールまたはアップグレードしてから設定する」を参照してください。

  2. AWS-UpdateWindowsAmi ドキュメントを実行するには、次のコマンドを実行します。[parameters] セクションで、AMI ソース ID、Amazon EC2 インスタンスプロファイルロール、自動化サービスロールを指定します。以下のコマンド例では、最新の Amazon EC2 AMI を使用して、適用する必要があるパッチの数を最小限に抑えています。このコマンドを複数回実行する場合は、targetAMIname に一意の値を指定する必要があります。AMI 名は一意であることが必要です。

    aws ssm start-automation-execution --document-name="AWS-UpdateWindowsAmi" --parameters SourceAmiId='ami-0246f4914689c475f',IamInstanceProfileName='ManagedInstanceProfile',AutomationAssumeRole='arn:aws:iam::{{global:ACCOUNT_ID}}:role/AutomationServiceRole'

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

    {
        "AutomationExecutionId": "ID"
    }
  3. AWS CLI を使用してワークフローの実行を表示するには、以下のコマンドを実行します。

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

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

注記

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