翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS Proton CodeBuild プロビジョニングは、 AWS Proton 環境アカウントにある CodeBuild プロジェクトで、お客様が指定した任意のCLIコマンドを実行します。これらのコマンドは通常、 などの Infrastructure as Code (IaC) ツールを使用するリソースを管理しますCDK。Amazon にリソースがある場合VPC、 はリソースにアクセス CodeBuild できない可能性があります。これを有効にするために、 は特定の Amazon 内で を実行する機能 CodeBuild をサポートしますVPC。ユースケースの例を以下に示します。
-
Python 用
PyPI
、Java 用Maven
、Node.js 用npm
など、セルフホスト型の内部アーティファクトリポジトリから依存関係を取得する -
CodeBuild は、パイプラインを登録VPCするために、特定の Amazon の Jenkins サーバーにアクセスする必要があります。
-
Amazon VPCエンドポイント経由のアクセスのみを許可するように設定された Amazon S3 バケット内のオブジェクトにアクセスします。
-
プライベートサブネットで分離された Amazon RDS データベース内のデータに対して、ビルドから統合テストを実行します。
詳細については、CodeBuild 「」および「 VPCドキュメント」を参照してください。
CodeBuild プロビジョニングをカスタム で実行する場合VPC、 AWS Proton は簡単なソリューションを提供します。まず、VPCID、サブネット、セキュリティグループを環境テンプレートに追加する必要があります。次に、それらの値を環境仕様に入力します。これにより、特定の をターゲットとする CodeBuild プロジェクトが作成されますVPC。
環境テンプレートを更新する
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
マニフェスト
で Amazon VPC設定を構成するには CodeBuild、テンプレートマニフェストで というオプションのプロパティproject_properties
を使用できます。のコンテンツproject_properties
は、 CodeBuild プロジェクトを作成する AWS CloudFormation スタックに追加されます。これにより、Amazon VPC AWS CloudFormation プロパティ だけでなく、ビルドタイムアウトなど、サポートされているCodeBuild CloudFormation プロパティ も追加できます。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、サブネット、およびセキュリティグループを指定する必要があります。
VPC IDs リージョン内のすべての Amazon のリストを取得するには、次のコマンドを実行します。
aws ec2 describe-vpcs
すべてのサブネット のリストを取得するにはIDs、以下を実行します。
aws ec2 describe-subnets --filters "Name=vpc-id,Values=
vpc-id
"
重要
プライベートサブネットのみを含め CodeBuild ます。パブリックサブネットを指定すると、 は失敗します。パブリックサブネットにはインターネットゲートウェイへのデフォルトルートがありますが、プライベートサブネットにはありません。
次のコマンドを実行して、セキュリティグループ を取得しますIDs。これらは、 を通じて取得IDsすることもできます AWS Management Console。
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