教學課程:將成品上傳到 Amazon S3 - Amazon CodeCatalyst

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

教學課程:將成品上傳到 Amazon S3

在本教學中,您將學習如何使用包含幾個建置動作的 CodeCatalyst 工作程將成品上傳到 Amazon S3 儲存貯體。當工作流程啟動時,這些動作會連續執行。第一個建置動作會產生兩個檔案Goodbye.txtHello.txt然後將它們捆綁到組建成品中。第二個建置動作會將成品上傳到 Amazon S3。您將配置工作流程,以便在每次將提交推送到源存儲庫時運行。

必要條件

開始之前,您必須準備好以下事項:

  • 您需要具有已連線 AWS 帳戶的 CodeCatalyst 空間。如需詳細資訊,請參閱 建立空間

  • 在您的空間中,您需要一個空的,從頭開始的 CodeCatalyst 項目,名為:

    codecatalyst-artifact-project

    如需詳細資訊,請參閱 在 Amazon 中創建一個空項目 CodeCatalyst

  • 在你的項目中,你需要一 CodeCatalyst 名為:

    codecatalyst-artifact-environment

    設定此環境的方式如下:

    • 選擇任何類型,例如開發

    • 將您的 AWS 帳戶 Connect 到它。

    • 對於預設 IAM 角色,請選擇任何角色。稍後您將指定不同的角色。

    如需詳細資訊,請參閱 使 CodeCatalyst用環境部署到 VPC AWS 帳戶 和 VPC

步驟 1:建立 AWS 角色

在此步驟中,您會建立 AWS IAM 角色,稍後將該角色指派給工作流程中的建置動作。此角色授予 CodeCatalyst 建立動作權限,以存取您的 AWS 帳戶並寫入存放您的成品的 Amazon S3。此角色稱為「建置」角色

注意

如果您已經有為其他教學課程建立的建置角色,也可以在本教學課程中使用它。只要確保它具有以下過程中顯示的權限和信任策略即可。

如需 IAM 角色的詳細資訊,請參閱AWS AWS Identity and Access Management 使用者指南中的 IAM 角色

若要建立建置角色
  1. 建立角色的策略,執行方式如下:

    1. 登入到 AWS。

    2. 前往 https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

    3. 在導覽窗格中,選擇政策

    4. 選擇 Create policy (建立政策)。

    5. 請選擇 JSON 標籤。

    6. 刪除現有的程式碼。

    7. 貼上以下程式碼:

      { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListBucket" ], "Resource": "*" } ] }
      注意

      第一次使用角色執行工作流程動作時,請在資源策略陳述式中使用萬用字元,然後在策略可用之後使用資源名稱縮小策略的範圍。

      "Resource": "*"
    8. 選擇下一步:標籤

    9. 選擇下一步:檢閱

    10. 名稱中,輸入:

      codecatalyst-s3-build-policy
    11. 選擇建立政策

      您現在已建立權限原則。

  2. 建立組建角色,如下所示:

    1. 在導覽窗格中,選擇 Roles (角色),然後選擇 Create role (建立角色)

    2. 選擇 [自訂信任原則]。

    3. 刪除現有的自訂信任原則。

    4. 新增下列自訂信任原則:

      { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
    5. 選擇下一步

    6. 在 [權限] 原則中,搜尋codecatalyst-s3-build-policy並選取其核取方塊。

    7. 選擇下一步

    8. 在「角色名稱」中,輸入:

      codecatalyst-s3-build-role
    9. 對於「角色」描述,請輸入:

      CodeCatalyst build role
    10. 選擇建立角色

    您現在已建立具有信任原則和權限原則的組建角色。

步驟 2:創建一個 Amazon S3 存儲桶

在此步驟中,您會建立 Amazon S3 儲存貯體,Hello.txt並在其中上傳和Goodbye.txt成品。

建立 Amazon S3 儲存貯體
  1. 前往 https://console.aws.amazon.com/s3/ 開啟的 Amazon Simple Storage Service (Amazon S3) 主控台。

  2. 在主窗格中,選擇 [建立值區]。

  3. 若為「值區名稱」,請輸入:

    codecatalyst-artifact-bucket
  4. 對於 AWS 區域,選擇一個區域。本教學課程假設您選擇美國西部 (奧勒岡) us-we st-2。如需 Amazon S3 支援區域的相關資訊,請參閱中的 Amazon 簡單儲存服務端點和配額AWS 一般參考

  5. 在頁面底部,選擇 [建立值區]。

  6. 複製您剛建立的值區名稱,例如:

    codecatalyst-artifact-bucket

您現在已經建立了一個名為美國西部 (奧勒岡) us-west-2 區codecatalyst-artifact-bucket域的值區。

步驟 3:建立來源儲存庫

在此步驟中,您可以在中建立來源儲存庫 CodeCatalyst。此儲存庫用於儲存自學課程的工作流程定義檔案。

如需來源儲存庫的詳細資訊,請參閱建立來源儲存庫

若要建立來源儲存庫
  1. 請在以下位置開啟 CodeCatalyst 主控台。 https://codecatalyst.aws/

  2. 導航到您的項目,codecatalyst-artifact-project

  3. 在瀏覽窗格中,選擇 [程式碼],然後選擇 [原始碼儲存庫]。

  4. 選擇 [新增儲存庫],然後選擇 [建立儲存庫]

  5. 存放庫名稱中,輸入:

    codecatalyst-artifact-source-repository
  6. 選擇建立

現在,您已經創建了一個名為codecatalyst-artifact-source-repository.

步驟 4:建立工作流程

在此步驟中,您會建立由下列依序執行的建置區塊組成的工作流程:

  • 觸發器 — 當您將變更推送至來源儲存庫時,此觸發器會自動啟動工作流程執行。如需觸發器的詳細資訊,請參閱使用觸發器啟動工作流程自動執行

  • 名為 GenerateFiles — 觸發器的建置GenerateFiles動作會建立兩個檔案Goodbye.txtHello.txt然後將它們封裝到名為的輸出成品中codecatalystArtifact

  • 另一個名為的建置動作 Upload — 動作完成後,GenerateFilesUpload作會執行 AWS CLI 命令,aws s3 sync將來源儲存庫中codecatalystArtifact和來源儲存庫中的檔案上傳到 Amazon S3 儲存貯體。 CodeCatalyst計算平台已預先安裝並預先設定,因此您不需要安裝或設定它。 AWS CLI

    如需有關 CodeCatalyst 運算平台上預先封裝軟體的詳細資訊,請參閱指定執行階段環境 Docker 影像。若要取得有關aws s3 sync指令 AWS CLI的更多資訊,請參閱《AWS CLI 指令參考》中的 sync

如需建置動作的詳細資訊,請參閱以工作流程建置

若要建立工作流程
  1. 在瀏覽窗格中,選擇 CI/CD,然後選擇 [工作流程]。

  2. 選擇建立工作流程

  3. 刪除 YAML 範例程式碼。

  4. 新增下列 YAML 程式碼:

    注意

    在下面的 YAML 代碼中,如果需要,可以省略該Connections:部分。如果省略本節,則必須確保您環境的 D efault IAM 角色欄位中指定的角色包含中所述的許可和信任政策步驟 1:建立 AWS 角色。如需使用預設 IAM 角色設定環境的詳細資訊,請參閱建立環境

    Name: codecatalyst-artifact-workflow SchemaVersion: 1.0 Triggers: - Type: Push Branches: - main Actions: GenerateFiles: Identifier: aws/build@v1 Configuration: Steps: # Create the output files. - Run: echo "Hello, World!" > "Hello.txt" - Run: echo "Goodbye!" > "Goodbye.txt" Outputs: Artifacts: - Name: codecatalystArtifact Files: - "**/*" Upload: Identifier: aws/build@v1 DependsOn: - GenerateFiles Environment: Name: codecatalyst-artifact-environment Connections: - Name: codecatalyst-account-connection Role: codecatalyst-s3-build-role Inputs: Artifacts: - codecatalystArtifact Configuration: Steps: # Upload the output artifact to the S3 bucket. - Run: aws s3 sync . s3://codecatalyst-artifact-bucket

    在上面的代碼中,替換:

    如需有關此檔案中性質的資訊,請參閱建置和測試動作 YAML 定義

  5. (選擇性) 選擇 [驗證],確定 YAML 程式碼在認可之前是有效的。

  6. 選擇 Commit (遞交)。

  7. 在「提交工作流程」對話方塊中,輸入以下內容:

    1. 對於「工作流程」檔案名稱,請保留預設值codecatalyst-artifact-workflow

    2. 對於提交訊息,請輸入:

      add initial workflow file
    3. 針對「儲存庫」,選擇codecatalyst-artifact-source-repository

    4. 選擇「主要」做為「分支名稱」。

    5. 選擇 Commit (遞交)。

    您現在已建立工作流程。工作流程執行會自動啟動,因為工作流程頂端定義了觸發器。具體而言,當您認可 (並推送) codecatalyst-artifact-workflow.yaml 檔案至來源儲存庫時,觸發程序會啟動工作流程執行。

若要檢視進行中的工作流程執行
  1. 在瀏覽窗格中,選擇 CI/CD,然後選擇 [工作流程]。

  2. 選擇您剛建立的工作流程:codecatalyst-artifact-workflow

  3. 選擇GenerateFiles查看第一個建置動作進度。

  4. 選擇 [上傳] 以查看第二個建置動作進度。

  5. 當「上」動作完成時,請執行下列動作:

    • 如果工作流程執行成功,請移至下一個程序。

    • 如果工作流程執行失敗,請選擇 [記錄檔] 以疑難排解問題。

步驟 5:驗證結果

工作流程執行後,前往 Amazon S3 服務並查看您的儲存codecatalyst-artifact-bucket貯體。它現在應該包括以下文件和文件夾:

. |— .aws/ |— .git/ |Goodbye.txt |Hello.txt |REAME.md

Goodbye.txtHello.txt檔案已上傳,因為它們是codecatalystArtifact成品的一部分。.aws/.git/、和README.md檔案已上傳,因為它們位於您的來源儲存庫中。

清除

清理 CodeCatalyst 並 AWS 避免被收取這些服務費用。

若要在中進行清理 CodeCatalyst
  1. 請在以下位置開啟 CodeCatalyst 主控台。 https://codecatalyst.aws/

  2. 刪除來codecatalyst-artifact-source-repository源儲存庫。

  3. 刪除codecatalyst-artifact-workflow工作流程。

若要在中進行清理 AWS
  1. 在 Amazon S3 中進行清理,如下所示:

    1. 前往 https://console.aws.amazon.com/s3/ 開啟的 Amazon Simple Storage Service (Amazon S3) 主控台。

    2. 刪除codecatalyst-artifact-bucket值區中的檔案。

    3. 刪除codecatalyst-artifact-bucket值區。

  2. 在 IAM 中進行清理,如下所示:

    1. 前往 https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

    2. 刪除codecatalyst-s3-build-policy

    3. 刪除codecatalyst-s3-build-role