

サポート終了通知: 2026 年 10 月 7 日に、 AWS はサポートを終了します AWS Proton。2026 年 10 月 7 日以降、 AWS Proton コンソールまたは AWS Proton リソースにアクセスできなくなります。デプロイされたインフラストラクチャはそのまま残ります。詳細については、[AWS Proton 「サービス廃止と移行ガイド](https://docs.aws.amazon.com/proton/latest/userguide/proton-end-of-support.html)」を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# CodeBuild プロビジョニングカスタム Amazon VPC サポート
<a name="vpc-codebuild-custom-support"></a>

AWS Proton CodeBuild プロビジョニングは、 AWS Proton 環境アカウントにある CodeBuild プロジェクトで、お客様が指定した任意の CLI コマンドを実行します。これらのコマンドは通常、CDK などのコード Infrastructure as Code (IaC) ツールでリソースを管理します。Amazon VPC にリソースがあると、CodeBuild ではそれらにアクセスできないおそれがあります。この問題を回避するために、CodeBuild は特定の Amazon VPC 内で実行する機能をサポートしています。ユースケースの例を以下に示します。
+ Python 用 `PyPI`、Java 用 `Maven`、Node.js 用 `npm` など、セルフホスト型の内部アーティファクトリポジトリから依存関係を取得する
+ パイプラインを登録するとき、CodeBuild は、特定の Amazon VPC 内の Jenkins サーバーにアクセスする必要があります。
+ アクセスルートが Amazon VPC エンドポイント経由に限定された設定の Amazon S3 バケット内のオブジェクトにアクセスする。
+ プライベートサブネット上に分離された Amazon RDS データベース内のデータに対して、ビルドから統合テストを実行する。

詳細については、「[CodeBuild と VPC のドキュメント](https://docs.aws.amazon.com/codebuild/latest/userguide/vpc-support.html#use-cases)」を参照してください。

CodeBuild プロビジョニングをカスタム VPC で実行する場合、 AWS Proton は簡単なソリューションを提供します。まず、環境テンプレートに、VPC ID、サブネット、セキュリティグループを追加します。次に、それらの値を環境仕様に入力します。以上で、特定の VPC をターゲットとする CodeBuild プロジェクトが自動的に作成されます。

## 環境テンプレートを更新する
<a name="vpc-codebuild-update-environment-template"></a>

**Schema**  
VPC ID、サブネット、セキュリティグループは、環境仕様に組み込むために、テンプレートスキーマに追加する必要があります。

例 `schema.yaml`:

```
schema:
  format:
    openapi: "3.0.0"
  environment_input_type: "EnvironmentInputType"
  types:
    EnvironmentInputType:
      type: object
      properties:
        codebuild_vpc_id:
          type: string
        codebuild_subnets:
          type: array
          items:
            type: string
        codebuild_security_groups:
          type: array
          items:
            type: string
```

これで、マニフェストが使用する 3 つの新しいプロパティが追加されます。
+ `codebuild_vpc_id`
+ `codebuild_subnets`
+ `codebuild_security_groups`

**マニフェスト**  
CodeBuild で Amazon VPC 設定を行うとき、`project_properties` というオプションのプロパティをテンプレートマニフェストで使用できます。のコンテンツ`project_properties`は、CodeBuild プロジェクトを作成する CloudFormation スタックに追加されます。これにより、[Amazon VPC CloudFormation プロパティ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-vpcconfig.html)だけでなく、ビルドタイムアウトなど、サポートされている [CodeBuild CloudFormation プロパティ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html)も追加できます。`proton-inputs.json` に提供された同じデータが、`project_properties` の値でも利用できるようになります。

このセクションをお使いの `manifest.yaml` に追加してください。

```
project_properties:
          VpcConfig:
            VpcId: "{{ environment.inputs.codebuild_vpc_id }}"
            Subnets: "{{ environment.inputs.codebuild_subnets }}"
            SecurityGroupIds: "{{ environment.inputs.codebuild_security_groups }}"
```

`manifest.yaml` の結果は以下のように表示されます。

```
infrastructure:
  templates:
    - rendering_engine: codebuild
      settings:
        image: aws/codebuild/amazonlinux2-x86_64-standard:4.0
        runtimes:
          nodejs: 16
        provision:
          - npm install
          - npm run build
          - npm run cdk bootstrap
          - npm run cdk deploy -- --require-approval never
        deprovision:
          - npm install
          - npm run build
          - npm run cdk destroy -- --force
        project_properties:
          VpcConfig:
            VpcId: "{{ environment.inputs.codebuild_vpc_id }}"
            Subnets: "{{ environment.inputs.codebuild_subnets }}"
            SecurityGroupIds: "{{ environment.inputs.codebuild_security_groups }}"
```

**環境の作成**  
CodeBuild プロビジョニング VPC 対応テンプレートで環境を作成するときは、Amazon VPC ID、サブネット、セキュリティグループを指定してください。

次のコマンドを実行して、リージョン内のすべての Amazon VPC ID のリストを取得します：

```
aws ec2 describe-vpcs
```

すべてのサブネット ID のリストを取得するには:

```
aws ec2 describe-subnets --filters "Name=vpc-id,Values=vpc-id"
```

**重要**  
プライベートサブネットのみを含めます。パブリックサブネットを指定すると、CodeBuild は失敗します。パブリックサブネットには[インターネットゲートウェイ](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Internet_Gateway.html)へのデフォルトルートがありますが、プライベートサブネットにはありません。

セキュリティグループ ID を取得するには、次のコマンドを実行します。これらの ID は AWS マネジメントコンソールからも取得できます。

```
aws ec2 describe-security-groups --filters "Name=vpc-id,Values=vpc-id"
```

値は以下のようになります。

```
vpc-id: vpc-045ch35y28dec3a05
subnets:
  - subnet-04029a82e6ae46968
  - subnet-0f500a9294fc5f26a
 security-groups:
  - sg-03bc4c4ce32d67e8d
```

**CodeBuild パーミッションの確認**  
Amazon VPC サポートには、Elastic Network Interface を作成する機能など、特定の権限が必要です。

コンソールで環境を作成する場合は、環境作成ウィザードでこれらの値を入力します。プログラムで環境を作成する場合、お使いの `spec.yaml` は以下のように表示されます。

```
proton: EnvironmentSpec

spec:
  codebuild_vpc_id: vpc-045ch35y28dec3a05
  codebuild_subnets:
    - subnet-04029a82e6ae46968
    - subnet-0f500a9294fc5f26a
  codebuild_security_groups:
    - sg-03bc4c4ce32d67e8d
```