SSM Agent が Windows Server インスタンス用にプロキシを使用するように設定する - AWS Systems Manager

SSM Agent が Windows Server インスタンス用にプロキシを使用するように設定する

このトピックの情報は、2016 年 11 月以降に作成された、Nano インストールオプションを使用しない Windows Server インスタンスに該当します。Session Manager を使用する予定の場合は、HTTPS プロキシサーバーはサポートされていないことに注意してください。

注記

2020 年 1 月 14 日以降、Windows Server 2008 は Microsoft の機能更新プログラムまたはセキュリティ更新プログラムでサポートされなくなりました。Windows Server 2008 および 2008 R2 のレガシー Amazon Machine Images (AMIs) には、依然としてバージョン 2 の SSM Agent がプリインストールされていますが、Systems Manager は 2008 バージョンを正式にサポートしなくなり、これらのバージョンの Windows Server のエージェントを更新しなくなりました。さらに、SSM Agent のバージョン 3 は、Windows Server 2008 および 2008 R2 のいずれのオペレーションとも互換性がない場合があります。Windows Server 2008 バージョンで正式にサポートされている最後の SSM Agent のバージョンは 2.3.1644.0 です。

開始する前に

SSM Agent がプロキシを使用するように設定する前に、以下の重要な情報に注意してください。

次の手順ではコマンドを実行し、SSM Agent がプロキシを使用するように設定します。コマンドには、IP アドレスを含む no_proxy 設定が含まれています。この IP アドレスは、Systems Manager のインスタンスメタデータサービス (IMDS) エンドポイントです。no_proxy を指定しない場合、Systems Manager への呼び出しによってプロキシサービスからアイデンティティを引き受けるか (IMDSv1 フォールバックが有効の場合)、Systems Manager への呼び出しが失敗します (IMDSv2 が強制されている場合)。

  • IPv4 の場合は、no_proxy=169.254.169.254 を指定します。

  • IPv6 の場合は、no_proxy=[fd00:ec2::254] を指定します。インスタンスメタデータサービスの IPv6 アドレスは、IMDSv2 コマンドと互換性があります。IPv6 アドレスは、AWS Nitro System 上に構築されたインスタンスでのみアクセス可能です。詳細については、「Amazon EC2 ユーザーガイド」の「インスタンスメタデータサービスバージョン 2 の仕組み」を参照してください。

SSM Agent がプロキシを使用するように設定するには
  1. リモートデスクトップまたは Windows PowerShell を使用して、プロキシを使用するように設定するインスタンスに接続します。

  2. PowerShell で次のコマンドブロックを実行します。hostnameport を、プロキシの情報に置き換えます。

    $serviceKey = "HKLM:\SYSTEM\CurrentControlSet\Services\AmazonSSMAgent" $keyInfo = (Get-Item -Path $serviceKey).GetValue("Environment") $proxyVariables = @("http_proxy=hostname:port", "https_proxy=hostname:port", "no_proxy=IP address for instance metadata services (IMDS)") if ($keyInfo -eq $null) { New-ItemProperty -Path $serviceKey -Name Environment -Value $proxyVariables -PropertyType MultiString -Force } else { Set-ItemProperty -Path $serviceKey -Name Environment -Value $proxyVariables } Restart-Service AmazonSSMAgent

上記のコマンドを実行した後、SSM Agent ログを確認すると、プロキシ設定が適用されたことを確認できます。ログのエントリは次のようになります。SSM Agent ログの詳細については、「SSM Agent ログの表示」を参照してください。

2020-02-24 15:31:54 INFO Getting IE proxy configuration for current user: The operation completed successfully.
2020-02-24 15:31:54 INFO Getting WinHTTP proxy default configuration: The operation completed successfully.
2020-02-24 15:31:54 INFO Proxy environment variables:
2020-02-24 15:31:54 INFO http_proxy: hostname:port
2020-02-24 15:31:54 INFO https_proxy: hostname:port
2020-02-24 15:31:54 INFO no_proxy: IP address for instance metadata services (IMDS)
2020-02-24 15:31:54 INFO Starting Agent: amazon-ssm-agent - v2.3.871.0
2020-02-24 15:31:54 INFO OS: windows, Arch: amd64
SSM Agent のプロキシ設定をリセットするには
  1. リモートデスクトップまたは Windows PowerShell を使用して、設定先のインスタンスに接続します。

  2. リモートデスクトップを使用して接続した場合は、管理者として PowerShell を起動します。

  3. PowerShell で次のコマンドブロックを実行します。

    Remove-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\AmazonSSMAgent -Name Environment Restart-Service AmazonSSMAgent

SSM Agent プロキシ設定の優先順位

Windows Server インスタンスで SSM Agent のプロキシ設定を構成する場合、SSM Agent の起動時にこれらの設定が評価され、エージェント構成に適用されることを理解することが重要です。Windows Server インスタンスのプロキシ設定を構成する方法によって、他の設定が目的の設定よりも優先されるかどうかを決定できます。エージェントは、エージェントが見つけた最初のプロキシ設定を使用します。

重要

SSM Agent は、HTTPS プロトコルを使用して通信します。このため、次の設定オプションのいずれかを使用して HTTPS proxy パラメータを設定する必要があります。

SSM Agent プロキシ設定は、次の順序で評価されます。

  1. AmazonSSMAgent のレジストリ設定 (HKLM:\SYSTEM\CurrentControlSet\Services\AmazonSSMAgent)

  2. System 環境変数 (http_proxyhttps_proxyno_proxy)

  3. LocalSystem ユーザーアカウントの環境変数 (http_proxyhttps_proxyno_proxy)

  4. ブラウザ設定 (HTTPsecureexceptions)

  5. WinHTTP のプロキシ設定 (http=https=bypass-list=)

SSM Agent プロキシ設定とSystems Manager サービス

プロキシを使用するように SSM Agent を設定し、 インスタンスでの実行時に PowerShell や Windows Update クライアントを使用する AWS Systems Manager の機能 (Run Command や Patch Manager など) を使う場合は、Windows Server追加のプロキシ設定を行います。そうしないと、プロキシ設定が PowerShell や Windows Update クライアントによって使用され、SSM Agent プロキシ設定から継承されないため、オペレーションが失敗する可能性があります。

Run Command の場合は、Windows Server インスタンスで WinINet プロキシ設定を行います。指定される [System.Net.WebRequest] コマンドはセッション単位です。これらの設定を Run Command で実行する後続のネットワークコマンドに適用する場合、同じ aws:runPowershellScript プラグイン入力内の他の Powershell コマンドの前にこれらのコマンドを指定する必要があります。

次の PowerShell コマンドでは、現在の WinINet プロキシ設定を返し、プロキシ設定を WinINet に適用します。

[System.Net.WebRequest]::DefaultWebProxy $proxyServer = "http://hostname:port" $proxyBypass = "169.254.169.254" $WebProxy = New-Object System.Net.WebProxy($proxyServer,$true,$proxyBypass) [System.Net.WebRequest]::DefaultWebProxy = $WebProxy

Patch Manager の場合は、Windows Update クライアントが更新をスキャンしてダウンロードできるように、システム全体のプロキシ設定を行います。次のコマンドは SYSTEM アカウントで実行され、設定がシステム全体に適用されるため、Run Command を使用して実行することをお勧めします。次の netsh コマンドでは、現在のプロキシ設定を返し、プロキシ設定をローカルシステムに適用します。

netsh winhttp show proxy netsh winhttp set proxy proxy-server="hostname:port" bypass-list="169.254.169.254"

Run Command の使用の詳細については、「AWS Systems Manager Run Command」を参照してください。