AWS CodeBuild サンドボックス SSH 接続の問題をトラブルシューティングする
このトピックの情報を使用して、CodeBuild サンドボックス SSH 接続の問題を特定、診断、対処します。
トピック
CodeBuild サンドボックス環境に SSH 接続する際の StartSandboxConnectionInvalidInputException エラー
問題: ssh codebuild-sandbox-ssh= コマンドを使用して CodeBuild サンドボックス環境に接続しようとすると、次のような <sandbox-arn>InvalidInputException エラーが発生する可能性があります。
An error occurred (InvalidInputException) when calling the StartSandboxConnection operation: Failed to start SSM session for {sandbox-arn} User: arn:aws:sts::<account-ID>:assumed-role/<service-role-name>/AWSCodeBuild-<UUID>is not authorized to perform: ssm:StartSession on resource.
An error occurred (InvalidInputException) when calling the StartSandboxConnection operation: Failed to start SSM session for sandbox<sandbox-arn>: codebuild:<UUID>is not connected.
考えられる原因:
-
Amazon EC2 Systems Manager エージェントがない: ビルドイメージに SSM エージェントが正しくインストールまたは設定されていません。
-
アクセス許可が不十分: CodeBuild プロジェクトサービスロールに必要な SSM アクセス許可がありません。
推奨される解決策: ビルドにカスタムイメージを使用している場合は、次の操作を行います。
-
SSM Agent をインストールします。詳細については、「」の「Linux 用 Amazon EC2 インスタンスに SSM エージェントを手動でインストールおよびアンインストールする」を参照してください。SSM エージェントは、バージョン
3.0.1295.0以降である必要があります。 -
https://github.com/aws/aws-codebuild-docker-images/blob/master/ubuntu/standard/7.0/amazon-ssm-agent.json
ファイルをイメージの /etc/amazon/ssm/ディレクトリにコピーします。これにより、SSM エージェントでコンテナモードが有効になります。 -
CodeBuild プロジェクトのサービスロールに次のアクセス許可があることを確認し、サンドボックス環境を再起動します。
{ "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:codebuild:region:account-id:build/*", "arn:aws:ssm:region::document/AWS-StartSSHSession" ] }
エラー: CodeBuild サンドボックス環境への SSH 接続時に「認証情報を見つけることができません」
問題: ssh codebuild-sandbox-ssh= コマンドを使用して CodeBuild サンドボックス環境に接続しようとすると、次の認証情報エラーが発生することがあります。<sandbox-arn>
Unable to locate credentials. You can configure credentials by running "aws configure".
考えられる原因: AWS 認証情報がローカル環境で正しく設定されていません。
推奨される解決策: 公式ドキュメント「バージョン 2 の AWS Command Line Interface ユーザーガイド」の「AWS CLI の設定」に従って AWS CLI 認証情報を設定します。
CodeBuild サンドボックス環境に SSH 接続する際の StartSandboxConnectionAccessDeniedException エラー
問題: ssh codebuild-sandbox-ssh= コマンドを使用して CodeBuild サンドボックス環境に接続しようとすると、次のアクセス許可エラーが発生することがあります。<sandbox-arn>
An error occurred (AccessDeniedException) when calling the StartSandboxConnection operation: User: arn:aws:sts::account-id:assumed-role/role-nameis not authorized to perform: codebuild:StartSandboxConnection on resource:sandbox-arnbecause no identity-based policy allows the codebuild:StartSandboxConnection action
考えられる原因: AWS 認証情報に、この操作を実行するために必要な CodeBuild アクセス許可がありません。
推奨される解決策: AWS CLI 認証情報に関連付けられた IAM ユーザーまたはロールに次のアクセス許可があることを確認します。
{ "Effect": "Allow", "Action": [ "codebuild:StartSandboxConnection" ], "Resource": [ "arn:aws:codebuild:region:account-id:sandbox/*" ] }
エラー: CodeBuild サンドボックス環境への SSH 接続時に「ssh: ホスト名を解決できませんでした」
問題: ssh codebuild-sandbox-ssh= コマンドを使用して CodeBuild サンドボックス環境に接続しようとすると、次のホスト名解決エラーが発生します。<sandbox-arn>
ssh: Could not resolve hostname
考えられる原因: このエラーは通常、必要な CodeBuild サンドボックス接続スクリプトがローカル環境で正しく実行されていない場合に発生します。
推奨される解決策。
-
CodeBuild サンドボックス接続スクリプトをダウンロードします。
-
ターミナルでスクリプトを実行して、必要な SSH 設定を確立します。
-
サンドボックス環境への SSH 接続を再試行します。