AWS CodeBuild
ユーザーガイド (API バージョン 2016-10-06)

Amazon Virtual Private Cloud で CodeBuild を使用する

通常、VPC 内のリソースには AWS CodeBuild でアクセスすることはできません。アクセスを有効にするには、CodeBuild プロジェクト設定の一部として追加の VPC 固有設定情報を指定する必要があります。これには、VPC ID、VPC サブネット ID、および VPC セキュリティグループ ID が含まれます。VPC 対応のビルドは、VPC 内のリソースにアクセスできます。Amazon VPC で VPC を設定する方法の詳細については、「VPC ユーザーガイド」を参照してください。

ユースケース

AWS CodeBuild からの VPC 接続により、次のことが可能になります。

  • プライベートサブネット上に分離された Amazon RDS データベース内のデータに対して、ビルドから統合テストを実行する。

  • Amazon ElastiCache クラスターのデータをテストから直接クエリする。

  • Amazon EC2、Amazon ECS、または内部 Elastic Load Balancing を使用するサービスでホストされる内部ウェブサービスを操作する。

  • Python 用 PyPI、Java 用 Maven、Node.js 用 npm など、セルフホスト型の内部アーティファクトリポジトリから依存関係を取得する。

  • Amazon VPC エンドポイント経由でのみアクセスできるように設定された Amazon S3 バケット内のオブジェクトにアクセスする。

  • 固定 IP アドレスを必要とする外部ウェブサービスを、サブネットに関連付けられた NAT ゲートウェイまたは NAT インスタンスの Elastic IP アドレスを使用してクエリする。

お客様のビルドは、VPC でホストされている任意のリソースにアクセスできます。

CodeBuild プロジェクトでの Amazon VPC アクセスの有効化

以下の設定を VPC 設定に含めます。

  • [VPC ID] で、CodeBuild が使用する VPC ID を選択します。

  • [サブネット] で、CodeBuild を使用したリソースへのルートを含む NAT 変換を持つプライベートサブネットを選択します。

  • [Security Groups (セキュリティグループ)] で、CodeBuild が VPC 内のリソースへのアクセスを許可するために使用するセキュリティグループを選択します。

ビルドプロジェクトの作成 (コンソール)

ビルドプロジェクトの作成の詳細については、「ビルドプロジェクトの作成 (コンソール)」を参照してください。CodeBuild プロジェクトを作成または変更する場合、[VPC] で、VPC ID、サブネット、セキュリティグループを選択します。

ビルドプロジェクトを作成する (AWS CLI)

ビルドプロジェクトの作成の詳細については、「ビルドプロジェクトを作成する (AWS CLI)」を参照してください。AWS CLI で CodeBuild を使用している場合、IAM ユーザーに代わってサービスを操作するために CodeBuild が使用するサービスロールには、次のポリシーがアタッチされている必要があります:「VPC ネットワークインターフェイスを作成するために必要な AWS サービスへの CodeBuild アクセスを可能にする」。

vpcConfig オブジェクトには、vpcIdsecurityGroupIds、および subnets が含まれている必要があります。

  • vpcId: 必須値。CodeBuild で使用される VPC ID。リージョン内のすべての Amazon VPC ID のリストを取得するには、次のコマンドを実行します。

    aws ec2 describe-vpcs
  • subnets: 必須値。CodeBuild で使用されるリソースを含むサブネット ID。この ID を取得するには、次のコマンドを実行します。

    aws ec2 describe-subnets --filters "Name=vpc-id,Values=<vpc-id>" --region us-east-1

    注記

    us-east-1 を、ご利用のリージョンに置き換えてください。

  • securityGroupIds: 必須値。VPC 内のリソースへのアクセスを許可するために CodeBuild で使用されるセキュリティグループ ID。この ID を取得するには、次のコマンドを実行します。

    aws ec2 describe-security-groups --filters "Name=vpc-id,Values=<vpc-id>" --region us-east-1

    注記

    us-east-1 を、ご利用のリージョンに置き換えてください。

VPC のベストプラクティス

CodeBuild で動作するように VPC を設定する場合、このチェックリストを使用してください。

  • パブリックおよびプライベートサブネットと NAT ゲートウェイを使用して VPC を設定します。詳細については、「パブリックサブネットとプライベートサブネットを持つ VPC (NAT)」を参照してください。

    重要

    Amazon VPC で CodeBuild を使用するには、NAT ゲートウェイまたは NAT インスタンスが必要です。これにより、CodeBuild がパブリックエンドポイントに到達できるようになります (ビルド実行時に CLI コマンドを実行するなど)。CodeBuild は、作成したネットワークインターフェイスに Elastic IP アドレスを割り当てることをサポートしていないため、NAT ゲートウェイまたは NAT インスタンスの代わりにインターネットゲートウェイを使用することはできません。パブリック IP アドレスの自動割り当ては、Amazon EC2 インスタンスによる起動以外で作成されたネットワークインターフェイスに対しては Amazon EC2 ではサポートされていません。

  • VPC に複数のアベイラビリティーゾーンを含めます。

  • セキュリティグループに、ビルドに許可されたインバウンド (進入) トラフィックがないことを確認します。詳細については、「セキュリティグループルール」を参照してください。

  • ビルド用に別個のサブネットを設定します。

  • VPC にアクセスするように CodeBuild プロジェクトを設定する場合、プライベートサブネットのみを選択します。

Amazon VPC で VPC を設定する方法の詳細については、「Amazon VPC ユーザーガイド」を参照してください。

AWS CloudFormation を使用して CodeBuild VPC 機能を使用するように Amazon VPC を設定する方法の詳細については、「AWS CloudFormation VPC テンプレート」を参照してください。

VPC 設定のトラブルシューティング

VPC の問題をトラブルシューティングする場合、エラーメッセージに表示される情報を、問題の特定、診断、対処のために使用します。

次の一般的な CodeBuild VPC のエラーをトラブルシューティングする際に役立つガイドラインを以下に示します。「ビルドにはインターネット接続がありません。サブネットのネットワーク構成を確認してください。」

  1. インターネットゲートウェイが VPC にアタッチされていることを確認します

  2. パブリックサブネットのルートテーブルがインターネットゲートウェイを指していることを確認します

  3. ネットワーク ACL がトラフィックのフローを許可していることを確認します

  4. セキュリティグループがトラフィックのフローを許可していることを確認します

  5. NAT ゲートウェイのトラブルシューティングを行います

  6. プライベートサブネットのルートテーブルが NAT ゲートウェイを指していることを確認します

  7. IAM ユーザーに代わってサービスを操作するために CodeBuild が使用するサービスロールに、「このポリシー」のアクセス許可が付与されていることを確認します。詳細については、「CodeBuild サービスロールを作成する」を参照してください。

    CodeBuild にアクセス権限がない場合は、「Unexpected EC2 error: UnauthorizedOperation」メッセージが表示されます。 このエラーは、Amazon VPC を操作するのに必要な Amazon EC2 のアクセス権限が CodeBuild に付与されていない場合に発生する場合があります。