CodeBuild 佈建自訂 Amazon VPC 支援 - AWS Proton

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

CodeBuild 佈建自訂 Amazon VPC 支援

AWS Proton CodeBuild Provisioning 會在位於 AWS Proton 環境帳戶的 CodeBuild 專案中執行任意客戶提供的 CLI 命令。這些命令通常會使用 Infrastructure as Code (IaC) 工具來管理資源,例如 CDK。如果您在 Amazon VPC 中有資源,CodeBuild 可能無法存取它們。為了啟用此功能,CodeBuild 支援在特定 Amazon VPC 內執行的能力。幾個範例使用案例包括:

  • 從自我託管的內部成品儲存庫擷取相依性,例如 PyPI for Python、 Maven for Java 和 npm for Node.js

  • CodeBuild 需要存取特定 Amazon VPC 中的 Jenkins 伺服器,才能註冊管道。

  • 在設定為僅允許透過 Amazon VPC 端點存取的 Amazon S3 儲存貯體中存取物件。

  • 針對私有子網路上隔離的 Amazon RDS 資料庫中的資料,從您的組建執行整合測試。

如需詳細資訊,請參閱 CodeBuild 和 VPC 文件

如果您希望 CodeBuild Provisioning 在自訂 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

這會新增三個新屬性,供資訊清單使用:

  • 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 IDs的清單,請執行下列命令:

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 支援需要特定許可,例如建立彈性網路界面的能力。

如果環境是在 主控台中建立,請在環境建立精靈期間輸入這些值。如果您想要以程式設計方式建立環境,您的 spec.yaml如下所示:

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