翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
CodeBuild プロビジョニングカスタム Amazon VPC サポート
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 のドキュメント」を参照してください。
CodeBuild プロビジョニングをカスタム VPC で実行する場合は、AWS Proton に、わかりやすいソリューションが用意されています。まず、環境テンプレートに、VPC ID、サブネット、セキュリティグループを追加します。次に、それらの値を環境仕様に入力します。以上で、特定の VPC をターゲットとする CodeBuild プロジェクトが自動的に作成されます。
環境テンプレートを更新する
スキーマ
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 プロジェクトを作成する 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、サブネット、セキュリティグループを指定してください。
次のコマンドを実行して、リージョン内のすべての Amazon VPC ID のリストを取得します:
aws ec2 describe-vpcs
すべてのサブネット ID のリストを取得するには:
aws ec2 describe-subnets --filters "Name=vpc-id,Values=
vpc-id
"
重要
プライベートサブネットのみを含めます。パブリックサブネットを指定すると、CodeBuild は失敗します。パブリックサブネットにはインターネットゲートウェイへのデフォルトルートがありますが、プライベートサブネットにはありません。
セキュリティグループ ID を取得するには、次のコマンドを実行します。これらの ID は 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