Amazon Virtual Private Cloud での AWS CodeBuild の使用 - AWS CodeBuild

Amazon Virtual Private Cloud での AWS CodeBuild の使用

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

注記

CodeBuild からの VPC 接続は Windows ではサポートされていません。

注記

VPC を設定すると、ローカルキャッシュはサポートされません。2022 年 2 月 28 日以降、構築ごとに新しい Amazon EC2 インスタンスが使用されるため、VPC の構築に時間がかかります。

ユースケース

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

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

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

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

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

  • Amazon VPC エンドポイント経由でのみアクセスできるように設定された 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)」を参照してください。CodeBuild で AWS CLI を使用している場合は、CodeBuild が IAM ユーザーに代わってサービスを操作するために使用するサービスロールにポリシーをアタッチする必要があります。詳細については、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 を設定します。NAT ゲートウェイはパブリックサブネットにある必要があります。詳細については、Amazon VPC ユーザーガイド の「パブリックサブネットとプライベートサブネットを持つ VPC (NAT)」を参照してください。

    重要

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

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

  • セキュリティグループに、ビルドに許可されたインバウンド (進入) トラフィックがないことを確認します。CodeBuild にはアウトバウンドトラフィックに関する特定の要件はありませんが、GitHub や Amazon S3 など、ビルドに必要なインターネットリソースへのアクセスを許可する必要があります。

    詳細については、Amazon VPC ユーザーガイドの「Security Group Rules」を参照してください。

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

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

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

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

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

エラーメッセージに表示される情報を、問題の特定、診断、対処に役立てます。

一般的な CodeBuild VPC エラー「Build does not have internet connectivity. Please check subnet network configuration」のトラブルシューティングに役立つガイドラインを以下に示します。

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

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

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

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

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

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

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

    CodeBuild にアクセス許可がない場合は、「Unexpected EC2 error: UnauthorizedOperation」というエラーが表示されることがあります。このエラーは、VPC を使用するために必要な Amazon EC2 へのアクセス許可を CodeBuild が持っていない場合に発生することがあります。