使用AWS CodeBuild使用亞馬遜虛擬私有雲 - AWS CodeBuild

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

使用AWS CodeBuild使用亞馬遜虛擬私有雲

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

使用案例

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

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

  • 在亞馬遜查詢數據ElastiCache直接從測試集群。

  • 與 Amazon EC2、Amazon ECS 或使用內部彈性負載平衡的服務上託管的內部網路服務互動。

  • 從自我託管的內部成品儲存庫擷取相依性,例如 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 使用者與服務互動時所使用的服務角色必須連接政策。如需相關資訊,請參閱 允許 CodeBuild 存取建立虛擬私人 VPC 網路介面所需的 AWS 服務

虛擬私隱設定對象應包括您的VPCid,securityGroupIds,以及子網路

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

    aws ec2 describe-vpcs
  • subnets:必要。包含 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對於輸出流量沒有特定需求,但是您必須允許存取組建所需的任何網際網路資源,例如GitHub或亞馬遜 S3。

    如需詳細資訊,請參閱安全群組規則亞馬遜 VPC 用戶指南

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

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

如需有關在 Amazon VPC 中設定 VPC 的詳細資訊,請參閱亞馬遜 VPC 用戶指南

如需如何使用 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 許可。

VPC 的局限性

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

  • VPC 連線來源CodeBuild不支援共用 VPC。

  • 如果您設定 VPC,本機快取不支援。從 22 年 2 月 28 日開始,您的 VPC 組建將花費更長的時間,因為每個組建都會使用新的 Amazon EC2 執行個體。