Windows Server AMI を更新する - AWS Systems Manager

Windows Server AMI を更新する

AWS-UpdateWindowsAmi ランブックでは、JSON あるいは YAML のランブックを作成することなく、Amazon Windows Amazon Machine Image (AMI) のイメージメンテナンスタスクを自動化することができます。このランブックは Windows Server 2008 R2 以降でサポートされています。AWS-UpdateWindowsAmi ランブックを使用して次のタイプのタスクを実行できます。

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

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

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

開始する前に

ランブックの使用を開始する前に、ロールを Automation 用に設定して、アクセスを許可するインスタンスプロファイルの ARN を参照する iam:PassRole ポリシーを追加します。オプションで、 の一機能である Amazon EventBridge を Automation 用に設定しますAWS Systems Manager 詳細については、「オートメーションの設定」を参照してください。このチュートリアルでは、AWS Identity and Access Management (IAM) インスタンスプロファイルの名前を指定する必要もあります。IAM インスタンスプロファイル作成の詳細については、「Systems Manager に必要なインスタンスのアクセス許可を設定する」を参照してください。

注記

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

AWS-UpdateWindowsAmi ランブックは、次の入力パラメータを受け付けます。

Parameter Type 説明

SourceAmiId

文字列

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

SubnetId

文字列

(オプション) 一時インスタンスを起動するサブネット。デフォルト VPC を削除した場合は、このパラメータの値を指定する必要があります。

IamInstanceProfileName

文字列

(必須)「Systems Manager に必要なインスタンスのアクセス許可を設定する」で作成した IAM インスタンスプロファイルロールの名前。インスタンスプロファイルのロールは、コマンドの実行またはサービスの開始や停止など、インスタンスでアクションを実行するための自動化のアクセス許可を付与します。ランブックでは、インスタンスプロファイルロールの名前のみが使用されます。

AutomationAssumeRole

文字列

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

TargetAmiName

文字列

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

InstanceType

文字列

(オプション) WorkSpace ホストとして起動するインスタンスの種類。インスタンスタイプは、リージョンによって異なります。デフォルトのタイプは、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 Agent を更新します。

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

この手順では、AWS-ConfigureAWSPackage ランブックを使用して AWS PV ドライバーを更新します。

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

この手順では、AWS-ConfigureAWSPackage ランブックを使用して AWS ENA ネットワークドライバーを更新します。

ステップ 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」を参照してください。

Automation を使用してパッチを適用した Windows AMI を作成するには
  1. まだ AWS Command Line Interface (AWS CLI) をインストールして設定していない場合は、インストールして設定します。

    詳細については、「AWS CLI の最新バージョンをインストールまたは更新します。」を参照してください。

  2. 次のコマンドを実行して、AWS-UpdateWindowsAmi ランブックを実行します。各リソースプレースホルダーの例をユーザー自身の情報に置き換えます。以下のコマンド例では、最新の Amazon EC2 AMI を使用して、適用する必要があるパッチの数を最小限に抑えています。このコマンドを複数回実行する場合は、targetAMIname に一意の値を指定する必要があります。AMI 名は一意のものでなければなりません。

    aws ssm start-automation-execution \ --document-name="AWS-UpdateWindowsAmi" \ --parameters SourceAmiId='AMI ID',IamInstanceProfileName='IAM instance profile',AutomationAssumeRole='arn:aws:iam::{{global:ACCOUNT_ID}}:role/AutomationServiceRole'

    コマンドによって実行 ID が返されます。この ID をクリップボードにコピーします。この ID を使用して、オートメーションの状態を表示します。

    {
        "AutomationExecutionId": "automation execution ID"
    }
  3. AWS CLI を使用してオートメーションを表示するには、次のコマンドを実行します。

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

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

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