はじめに
プライベートサブネットにあるEC2インスタンスへ「AwsVssComponents」をインストールする必要がありました。
しかし、対象インスタンスがインターネットに接続できない環境だったため、RunCommandを使った「AwsVssComponents」のインストールが実行できず、対応手順を調べる必要がありました。
調べた結果、「AwsVssComponents」を無事にインストールを完了できたため、今後の備忘録としてその手順を記事にまとめておきます。
なお、なぜインスタンスにAwsVssComponentsを入れる必要があったのかについては、こちらで記事にしています。
状態
当初、公式サイトに乗っているVssComponentsのインストール手順で、プライベートサブネット内に配置されたEC2インスタンスに対し、SSM Run Commandを使用して AwsVssComponents のインストールを試みましたが、失敗しました。

手順の参考サイトはこちら
調査
調べてみたところ、どうやらAwsVssComponentsはCloudWatchエージェントやAWS CLIとは異なり、個別の公開ダウンロードURL(MSIインストーラなど)が提供されていないようでした。
以下のサイトを確認すると、AwsVssComponentsのインストールを成功させるには、AWSが管理するS3バケット (arn:aws:s3:::region-birdwatcher-prod/*) にアクセスできる状態にする必要があることが分かりました。
詳細については、こちらのサイトに記載されています。
「SSM Agent が必要とする Amazon S3 のアクセス許可」の箇所に、そのバケットの記載がありました。

該当箇所を抜粋すると以下の様に記載されていました。
「Distributor オペレーションに必要です。このバケットには、AWS-ConfigureAWSPackage などのドキュメントを使用して Distributor パッケージをインストールまたは更新するときに aws:configurePackage プラグインで使用されるパッケージマニフェストが含まれています。VPC エンドポイントを使用している場合は、S3 VPC エンドポイントポリシーにこのバケット(arn:aws:s3:::region-birdwatcher-prod/*)へのアクセスを含める必要があります。」
本環境ではS3 VPCエンドポイントを使用しており、エンドポイントポリシーによってS3へのアクセスを制限していたため、ポリシーに arn:aws:s3:::region-birdwatcher-prod/* へのアクセス許可を追加してあげる必要があります。
arn:aws:s3:::region-birdwatcher-prod/*へのアクセス許可
では実際にS3のアクセス許可を追加してみます。
S3エンドポイントのポリシーを以下のように設定しました。
追加した設定はこちらになります。
"arn:aws:s3:::ap-northeast-1-birdwatcher-prod",
"arn:aws:s3:::ap-northeast-1-birdwatcher-prod/*"
この設定では 東京リージョンの-birdwatcher-prodへのアクセスのみ許可 しています。
2行追加しているのは「バケット」と「オブジェクト」それぞれにアクセス許可を与えているためになります。
無事インストールが成功しました。
まとめ
今回は、プライベートサブネット内のEC2インスタンスにSSM Run Commandで AwsVssComponents をインストールする際のエラーと、その解決策について解説しました。
VssComponents (configurePackage) はMSIファイルなどでは提供されておらず、AWS公式のS3バケットから直接取得する仕様になっています。
そのため、S3 VPCエンドポイントポリシーでアクセスを制限している環境では、コンポーネントのダウンロード先である arn:aws:s3:::region-birdwatcher-prod/* へのアクセス許可を追加する必要があることが分かりました。
本記事が同じような事象で困っている方の参考になれば幸いです。

