失敗した Patch Manager (Linux) の操作をトラブルシューティングしたいです。
簡単な説明
パッチ適用操作は複数の理由で失敗する可能性があり、エラーのトラブルシューティング方法はオペレーティングシステム (OS) によって異なります。エラーメッセージは AWS マネジメントコンソールまたは API レスポンスで確認できます。ただし、コンソール出力は 48,000 文字に切り捨てられるため、特定の問題がわかりにくくなる可能性があります。このような問題については、マネージドノードに保存されている全出力を確認するのがベストプラクティスです。Amazon CloudWatch (CloudWatch) と Amazon Simple Storage Service (Amazon S3) に送信された出力を使用して、さらにトラブルシューティングを行うこともできます。
解決策
Patch Manager (Linux) の操作が失敗したときに表示されるエラーメッセージをトラブルシューティングするには、次のタスクを実行します。
AWS サポート-パッチマネージャーの Linux ランブックのトラブルシューティング
AWSSupport-TroubleshootPatchManagerLinux を使用して、Linux ベースのマネージドノードのパッチ適用障害をトラブルシューティングします。
パーティションと権限を確認する
/var/lib/amazon が noexec 権限でマウントされている場合、次の例のようなエラーメッセージが表示されます。
"/var/lib/amazon/ssm/<instanceid>/document/orchestration/<commandid>/PatchLinux/_script.sh: Permission deniedfailed to run commands: exit status 126"
この問題を解決するには、/var/log/amazon と /var/lib/amazon に排他パーティションを設定し、exec パーミッションでマウントします。
マネージドノードの権限を確認する
マネージドノードに、指定された Amazon S3 バケットへのアクセスに必要なアクセス権限がない場合、次の例のようなエラーメッセージが表示されます。
"Unable to download payload: https://s3.DOC-EXAMPLE-BUCKET.region.amazonaws.com/aws-ssm-region/patchbaselineoperations/linux/payloads/patch-baseline-operations-X.XX.tar.gz.failed to run commands: exit status 156"
この問題を解決するには、ネットワーク設定を更新し、AWS リージョナル Amazon S3 エンドポイントにアクセスできることを確認します。詳細については、「AWS Systems Manager Agent (SSM Agent) と AWS マネージド S3 バケットとの通信」を参照してください。
実行コマンドタスクとディレクトリ容量を確認する
2 つのコマンドが同じマネージドノードで AWS-RunPatchBaseline を同時に実行すると、次のエラーメッセージの例が表示されます。このエラーメッセージは、/var ディレクトリに使用可能なディスク容量がない場合にも表示されます。
エラーの例:
"IOError: [Errno 2] No such file or directory: 'patch-baseline-operations-X.XX.tar.gz'Unable to extract tar file: /var/log/amazon/ssm/patch-baseline-operations/patch-baseline-operations-1.75.tar.gz.
failed to run commands: exit status 155
Unable to load and extract the content of payload, abort.
failed to run commands: exit status 152"
この問題を解決するには、次のステップを実行してください。
- メンテナンスウィンドウに、AWS-RunPatchBaseline を実行する実行コマンドタスクが 2 つ以上含まれていないことを確認してください。タスクを同じ優先度に設定し、同じターゲット ID で実行することはできません。必要に応じて優先度レベル変更します。
- 同じスケジュールで AWS-RunPatchBaseline を実行し、同じマネージドノードをターゲットにしている State Manager の関連付けが 1 つだけであることを確認してください。
- /var ディレクトリの空き容量を増やします。
マネージドノードで実行されるプロセスを確認する
yum がすでに実行されていて、別のプロセスがデータベースをロックしているマネージドノードで AWS-RunPatchBaseline が実行されると、次の例のエラーメッセージが表示されます。
"MM/DD/YYYY HH:MM:SS root [INFO]: another process has acquired yum lock, waiting 2 s and retry."
この問題を解決するには、次のステップを実行してください。
- AWS-RunPatchBaseline をスケジュール上で同時に実行する State Manager の関連付け、メンテナンスウィンドウタスク、またはその他の構成が、同じマネージドノードをターゲットにしていないことを確認します。
- 手動 yum 操作が同時に実行されていないことを確認します。
サーバーの Python バージョンを確認する
Red Hat Enterprise Linux (RHEL)、Debian Server、Raspberry Pi、または Ubuntu Server インスタンスにサポートされているバージョンの Python 3 がインストールされていない場合、次のようなエラーメッセージが表示されます。
"An unsupported package manager and python version combination was found.Dnf requires Python 2 or Python 3 to be installed."
このエラーを解決するには、必要なサーバーに Python 3 (3.0 - 3.9) のバージョンをインストールします。
お使いの OS を確認する
OS がサポートされていないと、次のエラーメッセージの例が表示されます。
"An error occurred (UnsupportedOperatingSystem) when calling the GetDeployablePatchSnapshotForInstance operation: patch_common.exceptions.PatchManagerError: ('Unsupported Operating System', 146)"
この問題を解決するには、Patch Manager でサポートされている OS を使用してください。
インスタンスの出力を確認する
パッチ適用操作が失敗し、コンソールの出力が切り捨てられると、出力全体を表示できなくなることがあります。
このエラーを解決するには、次の場所にあるインスタンスの出力全体を確認してください。
"/var/lib/amazon/ssm/<example-instance-id>/document/orchestration/<example-command-id>/awsrunShellScript/PatchLinux/stdout"
**注:**すべての例の文字列を該当する値に置き換えます。
実行コマンドの出力を Amazon S3 または CloudWatch に送信するようにオペレーションを設定することもできます。