AWS CodeBuild のトラブルシューティング - AWS CodeBuild
Apache Maven が間違ったリポジトリのアーティファクトを参照しているビルドコマンドがデフォルトでルートとして実行されるファイル名に米国以外の文字が含まれている場合、ビルドが失敗する可能性があります。 英文字Amazon EC2 パラメータストアからパラメータを取得する際にビルドが失敗する場合があるCodeBuild コンソールでブランチフィルタにアクセスできない ビルドの成功または失敗を表示できない Windows Server Core 2016 プラットフォームの基本イメージが見つからず、選択できない buildspec ファイルの以前のコマンドが、以降のコマンドで認識されないエラー キャッシュをダウンロードしようとすると「アクセスが拒否されました」エラー カスタムビルドイメージを使用する場合、「BUILD_CONTAINER_UNABLE_TO_PULL_IMAGE」 エラー ビルドを完了する前に、ビルドコンテナがデッド状態になりました。ビルドコンテナはメモリ不足のため、またはDockerイメージがサポートされていないため、死亡しました。ErrorCode 500** エラー ビルドの実行時に「Dockerデーモンに接続できません」エラー: "CodeBuild が問題を抱えています」というエラーがエラー: "CodeBuild は、ビルドプロジェクトの作成または更新時に、以下を実行する権限がありません:sts:AssumeRole" エラー "GetBucketAclの呼び出し中にエラーが発生しました: バケット所有者が変更されたか、サービス ロールが s3:GetBucketAcl を呼び出す権限を持っていません。エラー "アーティファクトのアップロードに失敗しました: ビルドを実行する場合、無効な arn"エラー "Gitクローンに失敗しました: アクセスできません 'your-repository-URL': SSL証明書の問題: 証明書が自己署名ですエラー ビルドの実行時に「アクセスしようとしているバケットは、指定されたエンドポイントを使用してアドレス指定する必要があります」エラー "ポリシーのデフォルト バージョンは、拡張ゼロクリック ロール作成によって作成されなかったか、拡張ゼロクリック ロール作成によって作成された最新バージョンではありませんでした。"エラー "このビルドイメージでは、少なくとも 1 つのランタイムバージョンを選択する必要があります。"エラー QUEUED INSUFFICIENT_SUBNET": ビルド キュー内のビルドが失敗した場合エラー "キャッシュをダウンロードできません: リクエストエラー: 次の原因により、送信要求に失敗しました: x509: システムルートの読み込みに失敗しました。ルートが指定されていません。"エラー "S3 から証明書をダウンロードできません。AccessDeniedエラー "資格情報が見つかりません" プロキシサーバーで CodeBuild を実行しているときの RequestError タイムアウトエラービルドイメージ内に Bourne シェル (sh) が必要警告 ビルドを実行するときに「ランタイムのインストールをスキップしています。ランタイムバージョンの選択はこのビルドイメージではサポートされていません」エラー : BUILD_CONTAINER_UNABLE_TO_PULL_IMAGE

AWS CodeBuild のトラブルシューティング

このトピックの情報を使用して、問題を特定、診断、対処します。CodeBuild ビルドのログと監視を行い、トラブルシューティングを行う方法については、「ログ記録とモニタリング」を参照してください。

トピック

Apache Maven が間違ったリポジトリのアーティファクトを参照している

問題 Mavenを AWS CodeBuild- Javaビルド環境を提供するMavenは、 https://repo1.maven.org/maven2. これは、ビルドプロジェクトの pom.xml ファイルが別の場所を使用すると明示的に宣言した場合でも発生します。

考えられる原因: CodeBuild が提供する Java ビルド環境には、ビルド環境の /root/.m2 ディレクトリに事前にインストールされている settings.xml という名前のファイルが含まれています。この settings.xml には次の宣言が含まれています。これにより、Maven が常に https://repo1.maven.org/maven2 で、セキュアな中央 Maven リポジトリからビルドおよびプラグインの依存関係を引き出すように指示されます。

<settings> <activeProfiles> <activeProfile>securecentral</activeProfile> </activeProfiles> <profiles> <profile> <id>securecentral</id> <repositories> <repository> <id>central</id> <url>https://repo1.maven.org/maven2</url> <releases> <enabled>true</enabled> </releases> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <url>https://repo1.maven.org/maven2</url> <releases> <enabled>true</enabled> </releases> </pluginRepository> </pluginRepositories> </profile> </profiles> </settings>

推奨される解決策。 次の作業を行います。

  1. settings.xml ファイルをソースコードに追加します。

  2. この settings.xml ファイルでは、前述の settings.xml 形式をガイドとして使用して、Maven が代わりにビルドとプラグインの依存関係を取得するリポジトリを宣言します。

  3. ビルドプロジェクトの install フェーズで、settings.xml ファイルをビルド環境の /root/.m2 ディレクトリにコピーするよう CodeBuild に指示します。たとえば、この動作を示す buildspec.yml ファイルの次のスニペットを考えてみましょう。

    version 0.2 phases: install: commands: - cp ./settings.xml /root/.m2/settings.xml

ビルドコマンドがデフォルトでルートとして実行される

問題: AWS CodeBuild は、ビルドコマンドをルートユーザーとして実行します。これは、関連するビルドイメージの Dockerfile によって USER インストラクションが別のユーザーに設定された場合でも発生します。

原因 デフォルトでは、 CodeBuild は、rootユーザーとしてすべてのビルド コマンドを実行します。

推奨される解決策。 なし

ファイル名に米国以外の文字が含まれている場合、ビルドが失敗する可能性があります。 英文字

問題 米国外のファイルを含むファイル名のファイルを使用するビルドを実行する場合。 英語の文字(たとえば、中国語の文字)の場合、ビルドは失敗します。

考えられる原因 が提供する環境の構築 AWS CodeBuild デフォルトのロケールを に設定 POSIXPOSIX ローカリゼーションの設定は、 CodeBuild および米国以外のファイル名 英語の文字と、関連するビルドが失敗する原因になります。

推奨される解決策。 次のコマンドを pre_build 作成仕様ファイルのセクション。これらのコマンドは、ビルド環境がローカライズ設定に U.S. English UTF-8 を使用するようにします。これは、 CodeBuild および米国以外のファイル名 英語の文字。

Ubuntu ベースのビルド環境の場合:

pre_build: commands: - export LC_ALL="en_US.UTF-8" - locale-gen en_US en_US.UTF-8 - dpkg-reconfigure locales

Amazon Linux ベースのビルド環境の場合:

pre_build: commands: - export LC_ALL="en_US.utf8"

Amazon EC2 パラメータストアからパラメータを取得する際にビルドが失敗する場合がある

問題 ビルドが、格納されている 1 つ以上のパラメータの値を取得しようとしたとき Amazon EC2 パラメータストア、ビルドが DOWNLOAD_SOURCE エラーのあるフェーズ Parameter does not exist.

考えられる原因 ビルドプロジェクトが依存するサービスロールには、 ssm:GetParameters アクションまたはビルドプロジェクトが、 AWS CodeBuild また、 ssm:GetParameters パラメーターには、 /CodeBuild/.

推奨される解決策:

  • CodeBuild によって生成されていないサービスロールの場合は、その定義を更新して CodeBuild が ssm:GetParameters アクションを呼びだせるようにします。たとえば、次のポリシーステートメントでは、ssm:GetParameters アクションを呼び出して /CodeBuild/ で始まる名前を持つパラメータを取得できます。

    { "Version": "2012-10-17", "Statement": [ { "Action": "ssm:GetParameters", "Effect": "Allow", "Resource": "arn:aws:ssm:REGION_ID:ACCOUNT_ID:parameter/CodeBuild/*" } ] }
  • サービス ロールが次の人物によって生成された場合: CodeBuild、その定義を更新して許可します CodeBuild でパラメータにアクセスする Amazon EC2 で始まる名前以外の名前を持つパラメータストア /CodeBuild/。 たとえば、次のポリシーステートメントでは、 ssm:GetParameters 指定された名前のパラメータを取得するアクション:

    { "Version": "2012-10-17", "Statement": [ { "Action": "ssm:GetParameters", "Effect": "Allow", "Resource": "arn:aws:ssm:REGION_ID:ACCOUNT_ID:parameter/PARAMETER_NAME" } ] }

CodeBuild コンソールでブランチフィルタにアクセスできない

問題 ブランチフィルタオプションは、 AWS CodeBuild プロジェクト。

考えられる原因 ブランチフィルタオプションは非推奨です。このオプションはウェブフックフィルタグループに置き換えられています。これにより、CodeBuild の新しいビルドをトリガーするウェブフックイベントの制御が強化されます。

推奨される解決策。 Webhookフィルタの導入前に作成したブランチフィルタを移行するには、 HEAD_REF 正規表現によるフィルター ^refs/heads/branchName$。 たとえば、ブランチフィルタ正規表現が ^branchName$次に、 HEAD_REF フィルターは ^refs/heads/branchName$。 詳細については、以下を参照してください。 Bitbucket webhook イベント および GitHub ウェブフックイベントのフィルタリング (コンソール).

ビルドの成功または失敗を表示できない

問題 再試行されたビルドの成功または失敗は確認できません。

考えられる原因 ビルドのステータスを報告するオプションが有効になっていません。

推奨される解決策: 有効化 レポートビルドステータス 作成時または更新時 CodeBuild プロジェクト。このオプションは、ビルドをトリガーするときに CodeBuild にステータスを報告するように指示します。詳細については、以下を参照してください。 レポートビルドステータスAWS CodeBuild APIリファレンス.

Windows Server Core 2016 プラットフォームの基本イメージが見つからず、選択できない

問題 Windows Server Core 2016プラットフォームの基本イメージを検索または選択することはできません。

考えられる原因 このイメージをサポートしていない AWS 地域を使用しています。

推奨される解決策: Windows Server Core 2016プラットフォームの基本イメージがサポートされている以下のAWSリージョンのいずれかを使用します。

  • 米国東部(バージニア北部)

  • 米国東部 (オハイオ)

  • 米国東部 (オハイオ)

  • 米国西部 (北カリフォルニア)

buildspec ファイルの以前のコマンドが、以降のコマンドで認識されない

問題 buildspec ファイル内の 1 つ以上のコマンドの結果は、同じ buildspec ファイル内の後のコマンドで認識されません。たとえば、コマンドによってローカル環境変数が設定される場合がありますが、後で実行されるコマンドがそのローカル環境変数の値を取得できない可能性があります。

考えられる原因 buildspec ファイルバージョン 0.1 では、 AWS CodeBuild は、ビルド環境のデフォルトのシェルの個別のインスタンスで各コマンドを実行します。つまり、各コマンドは他のすべてのコマンドとは独立して実行されます。デフォルトでは、以前のコマンドの状態に依存する単一のコマンドを実行することはできません。

推奨される解決策: この問題を解決するには、ビルド仕様バージョン 0.2 を使用することをお勧めします。何らかの理由で buildspec バージョン 0.1 を使用する必要がある場合は、シェルコマンド連鎖演算子 (Linux の && など) を使用して、複数のコマンドを 1 つのコマンドにまとめることをお勧めします。または、複数のコマンドを含むソースコードにシェルスクリプトを組み込み、そのシェルスクリプトを buildspec ファイルの 1 つのコマンドから呼び出します。詳細については、「ビルド環境のシェルとコマンド」および「ビルド環境の環境変数」を参照してください。

エラー キャッシュをダウンロードしようとすると「アクセスが拒否されました」

問題 キャッシュが有効になっているビルド プロジェクトでキャッシュをダウンロードしようとすると、 Access denied エラーです。

考えられる原因

  • ビルドプロジェクトの一部としてキャッシングが設定されています。

  • キャッシュは、InvalidateProjectCache API により最近無効化されています。

  • CodeBuild を使用しているサービスロールには、キャッシュを保持する S3 バケットへの s3:GetObjectアクセス許可と s3:PutObject アクセス許可がありません。

推奨される解決策。 初めて使用する場合は、キャッシュ構成を更新した後、すぐにこれが表示されるのが普通です。このエラーが解消されない場合は、キャッシュを保持する S3 バケットへの s3:GetObject アクセス許可と s3:PutObject アクセス許可が、サービスロールに付与されているかどうかを確認する必要があります。詳細については、以下を参照してください。 S3 許可の指定Amazon S3 開発者ガイド.

エラー カスタムビルドイメージを使用する場合、「BUILD_CONTAINER_UNABLE_TO_PULL_IMAGE」

問題 カスタムビルドイメージを使用するビルドを実行しようとすると、ビルドはエラーで失敗します。 BUILD_CONTAINER_UNABLE_TO_PULL_IMAGE.

考えられる原因

  • ビルドイメージの全体的な非圧縮サイズが、ビルド環境のコンピューティングタイプの使用可能ディスクスペースよりも大きい。ビルドイメージのサイズを確認するには、Docker を使用して docker images REPOSITORY:TAG コマンドを実行します。コンピューティングタイプで使用可能なディスク容量のリストについては、「ビルド環境のコンピューティングタイプ」を参照してください。

  • AWS CodeBuild には、Amazon Elastic Container Registry (Amazon ECR) からビルドイメージを取得するアクセス許可がありません。

  • リクエストした Amazon ECR イメージは、AWS アカウントが使用している AWS リージョンで使用できません。

  • パブリックインターネットアクセスのない VPC でプライベートレジストリを使用しています。CodeBuild は VPC のプライベート IP アドレスからイメージをプルできません。詳細については、「 CodeBuild の AWS Secrets Manager を使用したプライベートレジストリのサンプル」を参照してください。

推奨される解決策:

  • 使用可能なディスク容量の大きなコンピューティングタイプを使用するか、カスタムビルドイメージのサイズを縮小します。

  • CodeBuild がカスタムビルドイメージをビルド環境にプルできるように、Amazon ECR のリポジトリの権限を更新します。詳細については、Amazon ECR サンプルを参照してください。

  • AWS アカウントで使用しているのと同じ AWS リージョンにある Amazon ECR イメージを使用します。

  • VPC でプライベートレジストリを使用する場合は、VPC にパブリックインターネットアクセスがあることを確認してください。

エラー ビルドを完了する前に、ビルドコンテナがデッド状態になりました。ビルドコンテナはメモリ不足のため、またはDockerイメージがサポートされていないため、死亡しました。ErrorCode 500**

問題 Microsoft WindowsまたはLinuxコンテナを AWS CodeBuildこのエラーは、プロビジョニングフェーズ中に発生します。

考えられる原因

  • コンテナ OS バージョンが CodeBuild でサポートされていません。

  • HTTP_PROXYHTTPS_PROXY、またはその両方がコンテナで指定されます。

推奨される解決策:

  • Microsoft Windows の場合は、Windows コンテナを、コンテナ OS バージョン microsoft/windowsservercore:10.0.x (microsoft/windowsservercore:10.0.14393.2125 など) で使用します。

  • Linux の場合は、Docker イメージの HTTP_PROXY 設定と HTTPS_PROXY 設定をクリアするか、ビルドプロジェクトで VPC 設定を指定します。

エラー ビルドの実行時に「Dockerデーモンに接続できません」

問題 ビルドに失敗すると、次のようなエラーが表示されます。 Cannot connect to the Docker daemon at unix:/var/run/docker.sock. Is the docker daemon running? 構築ログに記録されます。

考えられる原因 特権モードでビルドを実行していません。

推奨される解決策。 ビルドを特権モードで実行するには、次の手順に従います。

  1. CodeBuild コンソール (https://console.aws.amazon.com/codebuild/) を開きます。

  2. ナビゲーションペインで [ビルドプロジェクト] を選択し、該当するビルドプロジェクトを選択します。

  3. [編集] から [環境] を選択します。

  4. [Override images]、[環境] の順に選択します。

  5. 環境イメージ、オペレーティングシステム、ランタイム、およびイメージを指定します。これらの設定は、失敗したビルドの設定と一致する必要があります。

  6. [特権付与] を選択します。

    注記

    デフォルトでは、Docker コンテナはどのデバイスにもアクセスできません。権限モードは、ビルドプロジェクトの Docker コンテナにすべてのデバイスへのアクセスを許可します。詳細については、Docker Docs Web サイトの「Runtime Privilege and Linux Capabilities」を参照してください。

  7. [Update environment (環境の更新)] を選択します。

  8. [ビルドの開始] を選択してビルドを再度実行します。

エラー: "CodeBuild が問題を抱えています」というエラーが

問題 ビルドプロジェクトを実行しようとすると、ビルドの PROVISIONING フェーズ。

考えられる原因 ビルドは、大きすぎる環境変数を使用しています。 AWS CodeBuild。 CodeBuild は、すべての環境変数の長さ(すべての名前と値の合計)が合計で約5.500文字に達すると、エラーが発生することがあります。

推奨される解決策。 使用 Amazon EC2 Systems Manager 大きな環境変数を保存し、ビルドスペックファイルから取得するパラメータストア。 Amazon EC2 Systems ManagerParameter Store は、4.096 文字以下の個々の環境変数(名前と値の合計)を格納できます。大きな環境変数を保存するには、https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-paramstore.html ユーザーガイドの「Systems Manager パラメータストア」および「Amazon EC2 Systems ManagerSystems Manager パラメータストアコンソールチュートリアル」を参照してください。これらを取得するには、「buildspec の構文」の parameter-store マッピングを参照してください。

エラー: "CodeBuild は、ビルドプロジェクトの作成または更新時に、以下を実行する権限がありません:sts:AssumeRole"

問題 ビルド プロジェクトを作成または更新しようとすると、 Code:InvalidInputException, Message:CodeBuild is not authorized to perform: sts:AssumeRole on arn:aws:iam::account-ID:role/service-role-name.

考えられる原因

  • ビルドプロジェクトを作成または更新しようとしている AWS リージョン向けの AWS Security Token Service (AWS STS) が非アクティブ化されました。

  • ビルドプロジェクトに関連付けられた AWS CodeBuild サービスロールは存在しないか、CodeBuild を信頼するための十分なアクセス許可がありません。

推奨される解決策:

  • ビルドプロジェクトを作成または更新しようとしている AWS リージョン向けの AWS STS がアクティブ化されていることを確認します。詳細については、以下を参照してください。 アクティブ化と非アクティブ化 AWS STS の AWS 地域IAM ユーザーガイド.

  • 対象 CodeBuild サービスロールが AWS アカウント内に存在することを確認します。コンソールを使用していない場合は、ビルドプロジェクトを作成または更新したときにサービスロールの Amazon リソースネーム (ARN) のスペルを間違えていないことを確認してください。

  • 対象の CodeBuild サービスロールに、CodeBuild を信頼するための十分な権限があることを確認します。詳細については、CodeBuild サービスロールの作成の「信頼関係のポリシーステートメント」を参照してください。

エラー "GetBucketAclの呼び出し中にエラーが発生しました: バケット所有者が変更されたか、サービス ロールが s3:GetBucketAcl を呼び出す権限を持っていません。

問題 ビルドを実行すると、S3バケットの所有権の変更に関するエラーが表示され、 GetBucketAcl 許可。

考えられる原因 あなたは s3:GetBucketACL および s3:GetBucketLocation 許可を IAM 役割。これらのアクセス許可は、プロジェクトの S3 バケットを保護し、バケットにアクセスできるユーザーを自分に限定します。これらのアクセス許可を追加した後で、S3 バケットの所有者が変更されています。

推奨される解決策。 S3バケットの所有者であることを確認し、 IAM 再度追加してください。詳細については、「S3 バケットへの安全なアクセス」を参照してください。

エラー "アーティファクトのアップロードに失敗しました: ビルドを実行する場合、無効な arn"

問題 ビルドを実行すると、 UPLOAD_ARTIFACTS ビルドフェーズがエラーで失敗します Failed to upload artifacts: Invalid arn.

考えられる原因 S3出力バケット( AWS CodeBuild ビルドからのアウトプットを保存) が AWS 地域が CodeBuild プロジェクトを構築します。

推奨される解決策。 ビルドプロジェクトの設定を更新して、ビルドプロジェクトと同じ AWS 地域にある出力バケットをポイントします。

エラー "Gitクローンに失敗しました: アクセスできません 'your-repository-URL': SSL証明書の問題: 証明書が自己署名です

問題 ビルド プロジェクトを実行しようとすると、ビルドは、このエラーで失敗します。

考えられる原因 ソースリポジトリには自己署名証明書がありますが、S3 バケットから証明書をビルドプロジェクトの一部としてインストールする選択をしていません。

推奨される解決策:

  • プロジェクトを編集します。[証明書] で [S3 から証明書をインストールする] を選択します。[証明書のバケット] では、SSL 証明書が保存されている S3 バケットを選択します。[証明書のオブジェクトキー] に、S3 オブジェクトキーの名前を入力します。

  • プロジェクトを編集します。GitHub Enterprise Server プロジェクトリポジトリに接続するときの SSL 警告を無視するには、[Insecure SSL (安全でない SSL)] を選択します。

    注記

    [Insecure SSL] はテストのみに使用することが推奨されます。本番環境では使用しないでください。

エラー ビルドの実行時に「アクセスしようとしているバケットは、指定されたエンドポイントを使用してアドレス指定する必要があります」

問題 ビルドを実行すると、 DOWNLOAD_SOURCE ビルドフェーズがエラーで失敗します The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.

考えられる原因 作成済みのソースコードはS3バケットに保存され、そのバケットは AWS 地域が AWS CodeBuild プロジェクトを構築します。

推奨される解決策。 ビルド プロジェクトの設定を更新して、事前にビルドされたソースコードを含むバケットをポイントします。バケットがビルドプロジェクトと同じ AWS リージョンにあることを確認してください。

エラー "ポリシーのデフォルト バージョンは、拡張ゼロクリック ロール作成によって作成されなかったか、拡張ゼロクリック ロール作成によって作成された最新バージョンではありませんでした。"

問題 コンソールでプロジェクトを更新しようとすると、次のエラーで更新に失敗しました:

考えられる原因

  • 対象の AWS CodeBuild サービスロールに付いていたポリシーを更新しました。

  • 対象の CodeBuild サービスロールに付いていた前のバージョンのポリシーを選択しました。

推奨される解決策:

  • CodeBuild プロジェクトを編集し、[Allow to modify this service role so it can be used with this build project (このサービスロールの変更を CodeBuild に許可し、このビルドプロジェクトで使用できるようにする)] のチェックボックスをオフにします。使用している CodeBuild サービスロールに十分な権限があることを確認します。CodeBuild プロジェクトを再度編集する場合は、このチェックボックスを再度オフにする必要があります。詳細については、「CodeBuild サービスロールの作成」を参照してください。

  • 新しいサービスロールを使用するように CodeBuild プロジェクトを編集するには、次の手順に従います。

    1. IAM コンソールを開き、新しいサービスロールを作成します。詳細については、「CodeBuild サービスロールの作成」を参照してください。

    2. Open the AWS CodeBuild console at https://console.aws.amazon.com/codesuite/codebuild/home.

    3. ナビゲーションペインで、[Build projects] を選択します。

    4. ビルドプロジェクトの横にあるボタンを選択し、[編集]、[Environment (環境)] の順に選択します。

    5. [ Service role (サービスロール)] で、作成したロールを選択します。

    6. [Update environment (環境の更新)] を選択します。

エラー "このビルドイメージでは、少なくとも 1 つのランタイムバージョンを選択する必要があります。"

問題 ビルドを実行すると、 DOWNLOAD_SOURCE ビルドフェーズがエラーで失敗します YAML_FILE_ERROR: This build image requires selecting at least one runtime version.

考えられる原因 ビルドでは、 Amazon Linux 2 (AL2)標準イメージ、またはUbuntu標準イメージのバージョン2.0以降。ランタイムはbuildspecファイルに指定されません。

推奨される解決策。 _を使用する場合 aws/codebuild/standard:2.0 CodeBuild 管理イメージのランタイム バージョンを runtime-versions 参照できます。たとえば、PHP を使用するプロジェクトでは、次の buildspec ファイルを使用します。

version: 0.2 phases: install: runtime-versions: php: 7.3 build: commands: - php --version artifacts: files: - README.md
注記

runtime-versions セクションを指定して、Ubuntu Standard Image 2.0 以降、または Amazon Linux 2 (AL2) Standard Image 1.0 以降以外のイメージを使用すると、ビルドは警告「Skipping install of runtimes. Runtime version selection is not supported by this build image。」を出します。

詳細については、「Specify runtime versions in the buildspec file」を参照してください。

エラー QUEUED INSUFFICIENT_SUBNET": ビルド キュー内のビルドが失敗した場合

問題 ビルドキュー内のビルドが、次のようなエラーで失敗します。 QUEUED: INSUFFICIENT_SUBNET.

考えられる原因 VPCに指定されたIPv4 CIDRブロックは、予約済みIPアドレスを使用します。各サブネット CIDR ブロックの最初の 4 つの IP アドレスと最後の IP アドレスは使用できず、インスタンスに割り当てることができません。たとえば、CIDR ブロック 10.0.0.0/24 を持つサブネットの場合、次の 5 つの IP アドレスが予約されます。

  • 10.0.0.0: ネットワークアドレスです。

  • 10.0.0.1: : VPC ルーター用に AWS で予約されています。

  • 10.0.0.2: : AWS で予約されています。DNS サーバーの IP アドレスは、常に VPC ネットワークのベースに 2 を付加したものですが、各サブネット範囲のベースに 2 を付加したアドレスも予約されています。複数の CIDR ブロックを持つ VPC の場合、DNS サーバーの IP アドレスはプライマリ CIDR にあります。詳細については、以下を参照してください。 Amazon DNSサーバーAmazon VPC ユーザーガイド.

  • 10.0.0.3: : 将来の利用のために AWS で予約されています。

  • 10.0.0.255: : ネットワークブロードキャストアドレスです。VPC でのブロードキャストはサポートされていません。このアドレスは予約されています。

推奨される解決策: VPCが予約済みIPアドレスを使用しているかどうかを確認します。予約済みの IP アドレスを、予約されていないアドレスに置き換えます。詳細については、以下を参照してください。 VPCとサブネットのサイズ設定Amazon VPC ユーザーガイド.

エラー "キャッシュをダウンロードできません: リクエストエラー: 次の原因により、送信要求に失敗しました: x509: システムルートの読み込みに失敗しました。ルートが指定されていません。"

問題 ビルド プロジェクトを実行しようとすると、ビルドは、このエラーで失敗します。

考えられる原因 ビルド プロジェクトの一部としてキャッシュを構成し、期限切れのルート証明書を含む古い Docker イメージを使用しています。

推奨される解決策。 AWS CodeBuild プロジェクトで使用中の Docker イメージを更新します。詳細については、「CodeBuild に用意されている Docker イメージ」を参照してください。

エラー "S3 から証明書をダウンロードできません。AccessDenied

問題 ビルド プロジェクトを実行しようとすると、ビルドは、このエラーで失敗します。

考えられる原因

  • 証明書に正しくない S3 バケットが選択されています。

  • 証明書に誤ったオブジェクトキーが入力されています。

推奨される解決策:

  • プロジェクトを編集します。[証明書のバケット] では、SSL 証明書が保存されている S3 バケットを選択します。

  • プロジェクトを編集します。[証明書のオブジェクトキー] に、S3 オブジェクトキーの名前を入力します。

エラー "資格情報が見つかりません"

問題 実行しようとすると、 AWS CLI、 AWS SDK、またはビルドの一部として別の同様のコンポーネントを呼び出すと、 AWS CLI、 AWS SDK、またはコンポーネント。たとえば、「Unable to locate credentials」などのビルドエラーが発生する場合があります。

考えられる原因

  • ビルド環境の AWS CLI、AWS SDK またはコンポーネントのバージョンが AWS CodeBuild と互換性がありません。

  • Docker コンテナは、Docker を使用するビルド環境内で実行されていて、デフォルトではコンテナから AWS 認証情報にアクセスできません。

推奨される解決策:

  • ビルド環境に以下のバージョン以降の AWS CLI、AWS SDK、またはコンポーネントがインストールされていることを確認してください。

    • AWS CLI: 1.10.47

    • AWS SDK for C++ 0.2.19

    • Go 対応 AWS SDK 1.2.5

    • AWS SDK for Java 1.11.16

    • AWS JavaScript用SDK: 2.4.7

    • AWS PHP用SDK: 3.18.28 項

    • AWS Python用SDK(Boto3): 1.4.0

    • AWS SDK for Ruby 2.3.22(第2.3.22版)

    • Botocore 1.4.17(1.4.37)

    • CoreCLR: 3.2.6-beta

    • Node.js 、 () 2.4.7

  • Docker コンテナをビルド環境で実行する必要があり、このコンテナが AWS 認証情報を必要とする場合は、ビルド環境からコンテナに認証情報を渡す必要があります。buildspec ファイルに、次のような Docker run コマンドを含めます。この例では、aws s3 ls コマンドを使用して、使用可能な S3 バケットを一覧表示します。-e オプションは、コンテナが AWS 認証情報にアクセスするために必要な環境変数を渡します。

    docker run -e AWS_DEFAULT_REGION -e AWS_CONTAINER_CREDENTIALS_RELATIVE_URI your-image-tag aws s3 ls
  • Docker イメージを作成していて、ビルドに AWS 認証情報が必要な場合 (たとえば、Amazon S3 からファイルをダウンロードする場合)、ビルド環境から Docker ビルドプロセスに認証情報を次のようにパススルーする必要があります。

    1. Docker イメージ用ソースコードの Dockerfile に、次の ARG インストラクションを指定します。

      ARG AWS_DEFAULT_REGION ARG AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
    2. buildspec ファイルに、次のような Docker build コマンドを含めます。--build-arg オプションは、Docker ビルドプロセスが AWS 認証情報にアクセスするために必要な環境変数を設定します。

      docker build --build-arg AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION --build-arg AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI -t your-image-tag .

プロキシサーバーで CodeBuild を実行しているときの RequestError タイムアウトエラー

問題 以下を受け取ります。 RequestError エラーは次のいずれかに類似しています。

  • RequestError: send request failed caused by: Post https://logs.<your-region>.amazonaws.com/: dial tcp 52.46.158.105:443: i/o timeout (CloudWatch Logs から)。

  • Error uploading artifacts: RequestError: send request failed caused by: Put https://your-bucket.s3.your-aws-region.amazonaws.com/*: dial tcp 52.219.96.208:443: connect: connection refused (Amazon S3 から)。

考えられる原因

  • ssl-bump が適切に設定されていません。

  • 組織のセキュリティポリシーで ssl_bump を使用することが許可されていません。

  • buildspec ファイルに、proxy 要素を使用して指定されたプロキシ設定がありません。

推奨される解決策:

  • ssl-bump が適切に設定されていることを確認します。プロキシサーバーに Squid を使用している場合は、「 明示的なプロキシサーバーとしての Squid の設定」を参照してください。

  • Amazon S3 および CloudWatch Logs のプライベートエンドポイントを使用するには、次の手順に従います。

    1. プライベートサブネットのルーティングテーブルで、インターネット用トラフィックをプロキシサーバーにルーティングする追加済みのルールを削除します。詳細については、以下を参照してください。 VPCでのサブネットの作成Amazon VPC ユーザーガイド.

    2. プライベート Amazon S3 エンドポイントと CloudWatch Logs エンドポイントを作成し、それらを Amazon VPC のプライベートサブネットに関連付けます。詳細については、以下を参照してください。 VPCエンドポイントサービス(AWS PrivateLink)Amazon VPC ユーザーガイド.

    3. Amazon VPC の「プライベート DNS 名を有効にする」が選択されていることを確認します。詳細については、以下を参照してください。 インタフェースエンドポイントの作成Amazon VPC ユーザーガイド.

  • 明示的なプロキシサーバーに ssl-bump を使用しない場合は、proxy 要素を使用して buildspec ファイルにプロキシ設定を追加します。詳細については、「 明示的なプロキシサーバーでの CodeBuild の実行」および「buildspec の構文」を参照してください。

    version: 0.2 proxy: upload-artifacts: yes logs: yes phases: build: commands:

ビルドイメージ内に Bourne シェル (sh) が必要

問題 によって提供されていないビルドイメージを使用しています AWS CodeBuildというメッセージでビルドが失敗します。 Build container found dead before completing the build.

考えられる原因 Bourneシェル(sh)は、ビルドイメージに含まれていません。 CodeBuild ニーズ sh ビルドコマンドとスクリプトを実行します。

推奨される解決策。 次の場合: sh ビルドイメージに存在しない場合は、イメージを使用するビルドを開始する前に、そのイメージを含めてください。 (CodeBuild 既に sh 作成画像に表示)

警告 ビルドを実行するときに「ランタイムのインストールをスキップしています。ランタイムバージョンの選択はこのビルドイメージではサポートされていません」

問題 ビルドを実行すると、ビルドログにこの警告が表示されます。

考えられる原因 ビルドは、 Amazon Linux 2 (AL2)標準イメージ、またはUbuntu標準イメージのバージョン2.0以降。ランタイムは、 runtime-versions セクション(buildspecファイル内)を参照してください。

推奨される解決策。 buildspec ファイルに runtime-versions セクション。runtime-versions セクションは、Amazon Linux 2 (AL2) 標準イメージのバージョン 1.0 以降または Ubuntu 標準イメージのバージョン 2.0 以降を使用する場合にのみ必要です。

エラー : BUILD_CONTAINER_UNABLE_TO_PULL_IMAGE

問題 ビルドすると、次のようなエラーが表示されます。

BUILD_CONTAINER_UNABLE_TO_PULL_IMAGE: Unable to pull customer's container image. CannotPullContainerError: a Windows version 10.0.17763-based image is incompatible with a 10.0.14393 host

考えられる原因 Windows Server 2016環境タイプ(WINDOWS_CONTAINER)、ただしWindows Server 2019のイメージを選択。

推奨される解決策: 環境タイプを WINDOWS_SERVER_2019_CONTAINER.