SSM Agent が proxy を使用するように設定してみた

2021.10.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、リサリサです。

インターネットアクセスがプロキシサーバを経由する環境で Session Manager が使いたくて、設定してみたので記事にしてみます。

Session Manager を使うには、インターネットアクセスが必要です。今回はこのように、オンプレのプロキシサーバを経由してインターネットアクセスをする必要がある環境でした。プロキシサーバを経由するために、EC2にインストールしているSSMエージェントの設定を少し変える必要がありました。ちょうど Linux と Windows と両方設定したので、まとめてみます。

Linuxの設定

こちらを参考に設定しました。今回は RHEL8 で systemd 環境で試してみました。upstart 環境の場合は、リンク先を参照ください。

プロキシを使用するように SSM Agent を設定する (Linux) - AWS Systems Manager

設定変更

以下のコマンドを実行

sudo systemctl edit amazon-ssm-agent

※スナップを使用してインストールされた Ubuntu Server インスタンスの場合は「sudo systemctl daemon-reload && sudo systemctl restart snap.amazon-ssm-agent.amazon-ssm-agent」になります。

エディタが起動するので、以下を入力して保存します。hostname と port を、プロキシの情報に置き換えます。

  • HTTP プロキシサーバーの場合
[Service]
Environment="http_proxy=http://hostname:port"
Environment="https_proxy=http://hostname:port"
Environment="no_proxy=169.254.169.254"
  • HTTPS プロキシサーバーの場合
[Service]
Environment="http_proxy=http://hostname:port"
Environment="https_proxy=https://hostname:port"
Environment="no_proxy=169.254.169.254"

オペレーティングシステムの種類に応じて、次のいずれかのファイルが自動的に作成されるようです。

  • SSM Agent がスナップを使用してインストールされている Ubuntu Server インスタンスの場合
    • /etc/systemd/system/snap.amazon-ssm-agent.amazon-ssm-agent.service.d/override.conf
  • Amazon Linux 2 インスタンスの場合
    • /etc/systemd/system/amazon-ssm-agent.service.d/override.conf
  • 他のオペレーティングシステムの場合
    • /etc/systemd/system/amazon-ssm-agent.service.d/amazon-ssm-agent.override

SSM Agent の再起動

sudo systemctl daemon-reload && sudo systemctl restart amazon-ssm-agent

※スナップを使用してインストールされた Ubuntu Server インスタンスの場合は「sudo systemctl daemon-reload && sudo systemctl restart snap.amazon-ssm-agent.amazon-ssm-agent」になります。

Windowsの設定

こちらを参考に設定しました。今回は Windows2019 で試してみました。

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

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

$serviceKey = "HKLM:\SYSTEM\CurrentControlSet\Services\AmazonSSMAgent"
$keyInfo = (Get-Item -Path $serviceKey).GetValue("Environment")
$proxyVariables = @("http_proxy=hostname:port", "https_proxy=hostname:port", "no_proxy=169.254.169.254")

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

結果

設定後比較的すぐに、どちらも Session Manager から見えるようになりました!

参考

[1]プロキシを使用するように SSM Agent を設定する (Linux) - AWS Systems Manager

[2]SSM エージェントが Windows Server インスタンス用にプロキシを使用するように設定する - AWS Systems Manager