的 Amazon Elastic File System 範例範例AWS CodeBuild - AWS CodeBuild

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

的 Amazon Elastic File System 範例範例AWS CodeBuild

您可能想要建立AWS CodeBuild建立在 Amazon Elastic File System 上建立在 Amazon Elastic File System 上,該系統是針對 Amazon EC2 執行個體的 Amazon EFS 的儲存容量是有彈性的,所以它會隨著檔案新增和移除來成長或縮減。它有簡單的 Web 服務界面,可讓您用來快速輕鬆地建立和設定檔案系統。它還會為您管理所有檔案儲存基礎設施,因此您不需要擔心部署、修補,或維護檔案系統組態。如需詳細資訊,請參閱「」什麼是 Amazon Elastic File System?中的Amazon Elastic File System 使用指南

此範例示範如何配置 CodeBuild 專案,使得它會掛載 Java 應用程式,然後將其組建到 Amazon EFS 檔案系統。開始之前,您必須備妥一個可建置的 Java 應用程式,將該應用程式上傳到 S3 輸入儲存貯體或AWS CodeCommit, GitHub, GitHub 企業服務器或位桶存儲庫。

檔案系統傳輸中的資料會受到加密。若要使用不同的映像加密傳輸中的資料,請參閱加密傳輸中的資料

高階步驟

此範例涵蓋將 Amazon EFS 與AWS CodeBuild:

  1. 在您的AWS帳户。

  2. 建立使用此 VPC 的檔案系統。

  3. 建立並建置 CodeBuild 使用 VPC 的專案。所以此 CodeBuild 專案會使用下列內容來識別檔案系統:

    • 不重複的檔案系統識別碼。當您在組件專案中指定檔案系統時,您可以選擇識別碼。

    • 檔案系統 ID。當您在 Amazon EFS 主控台中檢視您的檔案系統時,系統就會顯示 ID。

    • 一個掛載點。這是 Docker 容器中的一個目錄,用於掛載檔案系統。

    • 掛載選項。這些包括如何掛載檔案系統的相關詳細資訊。

注意

在 Amazon EFS 中建立的檔案系統僅支援 Linux 平台。

使用 AWS CloudFormation 建立 VPC

使用 AWS CloudFormation 範本建立您的 VPC。

  1. 遵循AWS CloudFormation VPC 範本中的說明,使用 AWS CloudFormation 建立 VPC。

    注意

    此 AWS CloudFormation 範本建立的 VPC 會有兩個私有子網路和兩個公有子網路。您必須僅在使用私有子網絡時使用AWS CodeBuild掛載您在 Amazon EFS 中創建的文件系統。如果您使用其中一個公有子網路,則建置會失敗。

  2. 登入 AWS Management Console,並在 https://console.aws.amazon.com/vpc/ 開啟 Amazon VPC 主控台。

  3. 選擇您使用 AWS CloudFormation 建立的 VPC。

  4. Description (描述) 標籤上,記下 VPC 的名稱及其 ID。當您稍後在這個範例建立您的 AWS CodeBuild 專案時,會需要這兩個項目。

使用 VPC 建立 Amazon Elastic File System 案系統檔案系統

使用您稍早建立的 VPC,為此範例建立簡單的 Amazon EFS 檔案系統。

  1. 登入AWS Management Console,然後打開亞馬遜 EFS 控制台https://console.aws.amazon.com/efs/

  2. 選擇 Create file system (建立檔案系統)

  3. VPC 中,選擇您在此範例中稍早記下的 VPC 名稱。

  4. 將與您的子網路相關聯的可用區域保持選取。

  5. 選擇 Next Step (後續步驟)

  6. In新增標籤,用於默認名稱Key, 在數值下,輸入 Amazon EFS 檔案系統的名稱。

  7. Bursting (爆量)General Purpose (一般用途) 分別選為預設效能及傳輸量模式,然後選擇 Next Step (下一步)

  8. 對於 Configure new client (設定新用戶端),請選擇 Next Step (下一個步驟)

  9. 選擇 Create File System (建立檔案系統)

  10. (可選)我們建議您向您的 Amazon EFS 文件系統添加一個策略,以強制對傳輸中的數據進行加密。在 Amazon EFS 主控台,選擇檔案系統策略,選擇Edit (編輯)中,選擇標記為針對所有客户端強制傳輸中加密選擇下一步,然後選擇Save

建立 CodeBuild 項目與亞馬遜 EFS 一起使用

建立 AWS CodeBuild 專案,該專案會使用您在這個範例中稍早建立的 VPC。組件執行時,會掛載早期建立的 Amazon EFS 檔案系統。接下來,組件會儲存由您的 Java 應用程式於檔案系統的掛載點目錄中建立的 .jar 檔案。

  1. 開啟AWS CodeBuild主控台https://console.aws.amazon.com/codesuite/codebuild/home

  2. 從導覽窗格,選擇 Build projects (建置專案),然後選擇 Create build project (建立建置專案)

  3. Project name (專案名稱) 中,輸入您的專案名稱。

  4. Source provider (來源供應商),選擇包含您希望建置的 Java 應用程式的儲存庫。

  5. 輸入以下資訊,例如儲存庫 URL CodeBuild 用於定位您的應用程序。每個來源供應商的選項不同。如需詳細資訊,請參閱 Choose source provider

  6. Environment image (環境映像),選擇 Managed image (受管映像)

  7. Operating system (作業系統),選擇 Amazon Linux 2

  8. Runtime(s) (執行時間),選擇 Standard (標準)

  9. Image (映像) 中,選擇 aws/codebuild/amazonlinux2-x86_64-standard:3.0

  10. Environment type (環境類型) 中選擇 Linux

  11. 選取 Privileged (特殊權限)

    注意

    根據預設,Docker 容器不允許存取任何裝置。「Privileged」(特殊權限) 模式會授予建置專案之 Docker 容器對所有裝置的存取權。如需詳細資訊,請參閱 Docker Docs 網站上的 Runtime Privilege and Linux Capabilities

  12. Service role (服務角色) 下,選擇 New service role (新服務角色)。InRole name (角色名稱)中,輸入角色的名稱 CodeBuild 為您創建。

  13. 展開 Additional configuration (其他組態)

  14. VPC,選擇 VPC ID。

  15. Subnets (子網路),選擇與您的 VPC 關聯的一或多個私有子網路。您必須在掛載 Amazon EFS 檔案系統的組建中使用私有子網絡。如果您使用公有子網路,則建置會失敗。

  16. Security Groups (安全群組) 中選擇預設的安全群組。

  17. File systems (檔案系統) 中,輸入下列資訊:

    • 針對 Identifier (識別碼),輸入唯一的檔案系統識別碼。該字符必須少於 129 個字元,並只包含英數字元和底線。 CodeBuild 使用此識別碼建立可識別彈性檔案系統的環境變數。環境變量格式是大寫英文字母的 CODEBUILD_<file_system_identifier>。例如,如果您輸入 my_efs,環境變數則為 CODEBUILD_MY_EFS

    • 針對 ID,請選擇檔案系統 ID。

    • (可選)輸入檔案系統中的目錄。 CodeBuild 掛載此目錄。如果您離開目錄路徑空白,CodeBuild 會掛載整個檔案系統。此路徑相對於檔案系統的根目錄。

    • 適用於裝載點中,輸入掛載檔案系統所在的組建容器中目錄的絕對路徑。如果此目錄不存在, CodeBuild 建置期間建立它。

    • (選用) 輸入掛載選項。如果您離開掛載選項空白, CodeBuild 使用其默認掛載選項:

      nfsvers=4.1 rsize=1048576 wsize=1048576 hard timeo=600 retrans=2

      如需詳細資訊,請參閱「」建議的 NFS 掛載選項中的Amazon Elastic File System 使用指南

  18. 如為 Build specification (建置規格),選擇 Insert build commands (插入建置命令),然後選擇 Switch to editor (切換到編輯器)

  19. 在編輯器中輸入以下組建規格命令。使用您在步驟 17 中輸入的識別碼取代 <file_system_identifier>。使用大寫英文字母 (例如:CODEBUILD_MY_EFS)。

    version: 0.2 phases: install: runtime-versions: java: corretto11 build: commands: - mvn compile -Dgpg.skip=true -Dmaven.repo.local=$CODEBUILD_<file_system_identifier>
  20. 對所有其他設定使用預設值,然後選擇 Create build project (建立建置專案)。當建置完成時,您專案的主控台頁面就會顯示。

  21. 選擇 Start build (開始組建)

CodeBuild 和亞馬遜 EFS 示例摘要

在您的 AWS CodeBuild 專案建置後:

  • 您有由您的 Java 應用程式於掛載點目錄中的 Amazon EFS 檔案系統建立的 .jar 檔案。

  • 可辨識您檔案系統的環境變數,會使用您在建立專案時輸入的檔案系統識別碼建立。

如需詳細資訊,請參閱「」掛載檔案系統中的Amazon Elastic File System 使用指南

疑難排解

以下是使用 CodeBuild 設置 Amazon EFS 時可能會遇到的錯誤。

客户端錯誤:裝載 '127.0.0.1: /' 失敗。許可

使用 CodeBuild 安裝亞馬遜 EFS 時不支持 IAM 授權。如果您使用的是自定義 Amazon EFS 文件系統策略,則需要向所有 IAM 委託人授予讀寫訪問權限。例如:

"Principal": { "AWS": "*" }

客户端錯誤:裝載 '127.0.0.1: /' 失敗。通過對等重置連接

此錯誤有兩個可能的原因:

  • 所以此 CodeBuild VPC 子網位於不同於 Amazon EFS 裝載目標的可用區域。您可以解決這個問題,方法是在與 Amazon EFS 掛載目標相同可用區域中新增 VPC 子網路。

  • 安全組沒有與 Amazon EFS 通信的權限。您可以通過添加入站規則來解決此問題,以允許來自 VPC(為 VPC 添加主 CIDR 塊)或安全組本身的所有流量。

虛擬客户端錯誤: 意外的 EC2 錯誤:UnauthorizedOperation

當 CodeBuild 項目的 VPC 配置中的所有子網都是公有子網時,會出現此錯誤。VPC 中必須至少有一個私有子網路,以確保網絡連通。