使用AWS CodeBuildAmazon Virtual Private Cloud - AWS CodeBuild

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

使用AWS CodeBuildAmazon Virtual Private Cloud

AWS CodeBuild 通常無法存取 VPC 中的資源。若要允許存取,您必須在 CodeBuild 專案組態中提供額外的 VPC 專屬組態資訊。其中包括 VPC ID、VPC 子網路 ID 和 VPC 安全群組 ID。然後,已啟用 VPC 的建置就能夠存取 VPC 內的資源。如需有關在 Amazon VPC 中設定 VPC 的詳細資訊,請參Amazon VPC User Guide

注意

Windows 不支援來自 CodeBuild 的 VPC 連線。

注意

如果您配置 VPC,本機快取不受支援。從 02/28/22 開始,您的 VPC 構建將花費更長的時間,因為每個版本都會使用一個新的 Amazon EC2 實例。

使用案例

來自 AWS CodeBuild 組建的 VPC 連線可讓您:

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

  • 在亞馬遜中查詢數據ElastiCache直接從測試來執行個體。

  • 與 Amazon EC2、Amazon ECS 或使用內部 Elastic Load Balancing 的服務上託管的內部 Web 服務互動。

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

  • 在已設定為僅允許通過 Amazon VPC 端點存取的 S3 存取中,存取其中的物件。

  • 透過與子網路相關聯的 NAT 閘道或 NAT 執行個體的彈性 IP 地址,查詢需要固定 IP 地址的外部 Web 服務。

您的組建可以存取您的 VPC 中託管的任何資源。

允許亞馬遜 VPC 訪問CodeBuild項目

在您的 VPC 組態中包含這些設定:

  • 針對 VPC ID,選擇 CodeBuild 使用的 VPC ID。

  • 針對 Subnets (子網路),選擇具有 NAT 轉譯的私有子網路,且 NAT 轉譯包含或具有路由指向 CodeBuild 所使用的資源。

  • 針對 Security Groups (安全群組),選擇安全群組供 CodeBuild 用來允許存取 VPC 中的資源。

若要使用主控台來建立建置專案,請參閱建立組建專案 (主控台)。當您建立或變更 CodeBuild 專案時,請在 VPC 中選擇您的 VPC ID、子網路和安全群組。

若要使用 AWS CLI 建立建置專案,請參閱建立建置專案 (AWS CLI)。如果您是使用 AWS CLI 搭配 CodeBuild,則 CodeBuild 代表 IAM 使用者與服務互動時所使用的服務角色必須連接政策。如需相關資訊,請參閱 Allow CodeBuild 存取AWS建立 VPC 網路界面所需的服務

所以此VPCConfig對象應該包含vpcIdsecurityGroupIds,以及子網路

  • vpcId:必要。CodeBuild 所使用的 VPC ID。執行此命令,以取得您區域中的所有 Amazon VPC ID 清單:

    aws ec2 describe-vpcs
  • 子網路:必要。包含 CodeBuild 所使用資源的子網路 ID。執行此命令以取得這些 ID:

    aws ec2 describe-subnets --filters "Name=vpc-id,Values=<vpc-id>" --region us-east-1
    注意

    us-east-1 取代為您的區域。

  • securityGroupIds:必要。CodeBuild 用來允許存取 VPC 中資源的安全群組 ID。執行此命令以去得這些 ID:

    aws ec2 describe-security-groups --filters "Name=vpc-id,Values=<vpc-id>" --region us-east-1
    注意

    us-east-1 取代為您的區域。

VPC 最佳實務

設定 VPC 來與 CodeBuild 搭配使用時,請使用此檢查清單。

  • 使用公有和私有子網路以及 NAT 閘道來設定您的 VPC。NAT 閘道必須位於公有子網路中。如需詳細資訊,請參閱《Amazon VPC 使用者指南》中的含公有和私有子網路 (NAT) 的 VPC

    重要

    您需要 NAT 閘道或 NAT 執行個體,才能使用CodeBuild與您的 VPC,以便CodeBuild可以連上公有端點 (例如,在執行組建時執行 CLI 命令)。您不能使用網際網路閘道來代替 NAT 閘道或 NAT 執行個體,因為CodeBuild不支援指派彈性 IP 地址給它所建立的網路界面,而對於在 Amazon EC2 執行個體啟動以外建立的任何網路界面,Amazon EC2 不支援自動指派公有 IP 地址。

  • 將多個可用區域加入您的 VPC。

  • 請確定您的安全群組不允許流量傳入 (進入) 您的組建。CodeBuild對出站流量沒有特定要求,但您必須允許訪問構建所需的任何 Internet 資源,例如GitHub或 Amazon S3。

    如需詳細資訊,請參閱「」安全組規則中的Amazon VPC User Guide

  • 為您的組建設定個別子網路。

  • 當您設定 CodeBuild 專案來存取您的 VPC 時,只選擇私有子網路。

如需有關在 Amazon VPC 中設定 VPC 的詳細資訊,請參Amazon VPC User Guide

如需如何使用 AWS CloudFormation 將 VPC 設定成使用 CodeBuild 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. 確定 CodeBuild 代表 IAM 使用者與服務互動時所使用的服務角色,具有此政策中的許可。如需詳細資訊,請參閱 建立 CodeBuild 服務角色

    如果 CodeBuild 缺少許可,您可能會收到錯誤,指出:Unexpected EC2 error: UnauthorizedOperation。此錯誤可能會發生如果CodeBuild不具有搭配 VPC 一起使用所需的 Amazon EC2 許可。