搭 AWS CodeBuild 配 Amazon Virtual Private Cloud 使用 - AWS CodeBuild

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

搭 AWS CodeBuild 配 Amazon Virtual Private Cloud 使用

一般而言, AWS CodeBuild 無法存取 VPC 中的資源。若要啟用存取權,您必須在 CodeBuild 專案組態中提供其他 VPC 特定組態資訊。其中包括 VPC ID、VPC 子網路 ID 和 VPC 安全群組 ID。然後,已啟用 VPC 的建置就能夠存取 VPC 內的資源。如需在 Amazon VPC 中設定 VPC 的詳細資訊,請參閱 Amazon VPC 使用者指南。

使用案例

來自 AWS CodeBuild 組建的 VPC 連線能力讓您能夠:

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

  • 直接從測試中查詢 Amazon ElastiCache 叢集中的資料。

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

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

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

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

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

允許在您 CodeBuild的專案中存取 Amazon VPC

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

  • 對於 VPC ID,請選擇使 CodeBuild 用的 VPC 識別碼。

  • 對於子網路,請選擇具有 NAT 轉譯的私有子網路,該子網路包含或具有通往所使用資源的路由 CodeBuild。

  • 對於安全群組,請選擇 CodeBuild 用來允許存取 VPC 中資源的安全性群組。

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

若要使用 AWS CLI 建立建置專案,請參閱建立建置專案 (AWS CLI)。如果您使用 and CodeBuild, AWS CLI 用於代表 IAM 使 CodeBuild 用者與服務互動的服務角色必須附加政策。如需相關資訊,請參閱允許 CodeBuild 存取建立虛擬私人 VPC 網路介面所需的 AWS 服務

vpcConfig 件應包含您的 vpcId 和子網路。securityGroupIds

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

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

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

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

  • securityGroupIds:必要。用於允許存取 VPC 中資源的安全性群組 ID。 CodeBuild 執行此命令以去得這些 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 Amazon S3。

    如需詳細資訊,請參閱 Amazon VPC 使用者指南中的安全群組規則

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

  • 當您將 CodeBuild 專案設定為存取 VPC 時,請選擇僅私有子網路。

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

    如果 CodeBuild 缺少權限,您可能會收到錯誤訊息,顯示Unexpected EC2 error: UnauthorizedOperation。如果 CodeBuild 沒有使用 VPC 所需的 Amazon EC2 許可,就會發生此錯誤。

VPC 的局限性

  • 視窗中不支援虛擬私人 VPC 連線。 CodeBuild

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