プライベートサブネットで起動しているマネージドノードに適用した AWS-RunPatchBaseline が失敗する原因と対処法

2023.11.15

困っていること

ドキュメント を参考に、以下のエンドポイントへの HTTPS (ポート 443) アウトバウンドトラフィックを許可しています。そのため、プライベートサブネットで起動しているマネージドノード(EC2インスタンス)が問題なく存在します。

  • ssm.region.amazonaws.com
  • ssmmessages.region.amazonaws.com
  • ec2messages.region.amazonaws.com

しかしながら、Run Command を用いて AWS-RunPatchBaseline の適用を実施したところ、コマンドの説明とステータスより以下のエラーが出力され完了できません。 対処法を教えてください。

Unable to download payload: https://s3.dualstack.ap-northeast-1.amazonaws.com/aws-ssm-ap-northeast-1/patchbaselineoperations/linux/payloads/patch-baseline-operations-1.112.tar.gz.failed to run commands: exit status 156

どう対応すればいいの?

以下 2 点が不足している状況と考えられますのでご確認ください。

  • S3 ゲートウェイエンドポイント
  • EC2 インスタンスのセキュリティグループ アウトバウンドルール HTTP (ポート 80) 許可

インターネットに接続せずにインスタンス上でパッケージを更新およびインストールするには、S3 Amazon Virtual Private Cloud (Amazon VPC) ゲートウェイエンドポイントが必要です。
その作成される S3 ゲートウェイエンドポイント "com.amazonaws.ap-northeast-1.s3" は、SSM Agent では HTTP (ポート 80) を利用して通信を行っています。
そのため、EC2 インスタンスのセキュリティグループのアウトバウンドルール HTTP (ポート 80) を許可する必要がございます。場合によっては VPC エンドポイントのセキュリティグループでも、インバウンドルール HTTP (ポート 80) の許可 と HTTPS (ポート 443) の許可をしているかご確認ください。

各種ご対応後、AWS-RunPatchBaseline が成功するかお試しください。

Amazon Linux リポジトリは Amazon シンプルストレージサービス (Amazon S3) バケットでホストされます。インターネットに接続せずにインスタンス上でパッケージを更新およびインストールするには、S3 Amazon Virtual Private Cloud (Amazon VPC) ゲートウェイエンドポイントを作成します。Amazon S3 VPC ゲートウェイエンドポイントには、リポジトリのバケットへのアクセスを許可するポリシーを含めます。次に、VPC エンドポイントをインスタンスサブネットのルーティングテーブルに関連付けます。

さまざまな Systems Manager のオペレーションを実行する過程で、AWS Systems Manager Agent (SSM Agent) は多数の Amazon Simple Storage Service (Amazon S3) バケットにアクセスします。これらの S3 バケットはパブリックにアクセス可能です。デフォルトで、SSM Agent は HTTP 呼び出しを使用してこれに接続します。

参考資料