

Amazon CodeCatalyst 不再向新客戶開放。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[如何從 CodeCatalyst 遷移](migration.md)。

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

# 教學課程：將成品上傳至 Amazon S3
<a name="build-deploy"></a>

在本教學課程中，您將了解如何使用包含幾個[建置動作](workflows-concepts.md#workflows-concepts-actions)的 Amazon CodeCatalyst 工作流程，將成品上傳至 Amazon S3 儲存貯體。 CodeCatalyst [工作流程](workflows-concepts.md#workflows-concepts-workflows) 這些動作會在工作流程開始時串聯執行。第一個建置動作會產生兩個檔案 `Hello.txt`和 `Goodbye.txt`，並將其封裝成建置成品。第二個建置動作會將成品上傳至 Amazon S3。您將設定工作流程，在每次將遞交推送至來源儲存庫時執行。

**Topics**
+ [先決條件](#build-deploy-tut-prereqs)
+ [步驟 1：建立 AWS 角色](#build-deploy-tut-role)
+ [步驟 2：建立 Amazon S3 儲存貯體](#build-deploy-tut-artifact)
+ [步驟 3：建立來源儲存庫](#deploy-tut-lambda-cfn-source)
+ [步驟 4：建立工作流程](#build-deploy-tut-workflow.title)
+ [步驟 5：驗證結果](#build-deploy.s3.verify)
+ [清除](#deploy-tut-lambda-cfn-clean-up)

## 先決條件
<a name="build-deploy-tut-prereqs"></a>

開始之前，您必須準備好以下事項：
+ 您需要具有連線 AWS 帳戶的 CodeCatalyst **空間**。如需詳細資訊，請參閱[建立空間](spaces-create.md)。
+ 在您的空間中，您需要一個名為 的空專案：

  ```
  codecatalyst-artifact-project
  ```

  使用**從頭開始**選項來建立此專案。

  如需詳細資訊，請參閱[在 Amazon CodeCatalyst 中建立空專案](projects-create.md#projects-create-empty)。
+ 在專案中，您需要名為 的 CodeCatalyst **環境**：

  ```
  codecatalyst-artifact-environment
  ```

  設定此環境，如下所示：
  + 選擇任何類型的，例如**開發**。
  + 將您的帳戶連接到該 AWS 帳戶。
  + 針對**預設 IAM 角色**，選擇任何角色。稍後您將指定不同的角色。

  如需詳細資訊，請參閱[部署至 AWS 帳戶 和 VPCs](deploy-environments.md)。

## 步驟 1：建立 AWS 角色
<a name="build-deploy-tut-role"></a>

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

**注意**  
如果您已經有為另一個教學課程建立的建置角色，您也可以將其用於此教學課程。只要確定它具有下列程序中顯示的許可和信任政策即可。

如需 IAM 角色的詳細資訊，請參閱*AWS AWS Identity and Access Management 《 使用者指南*》中的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)。

**建立建置角色**

1. 建立角色的政策，如下所示：

   1. 登入 AWS。

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

   1. 在導覽窗格中，選擇**政策**。

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

   1. 請選擇 **JSON** 標籤。

   1. 刪除現有的程式碼。

   1. 貼上以下程式碼：

------
#### [ JSON ]

****  

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

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

      ```
      "Resource": "*"
      ```

   1. 選擇下**一步：標籤**。

   1. 選擇下**一步：檢閱**。

   1. 在**名稱**中，輸入：

      ```
      codecatalyst-s3-build-policy
      ```

   1. 選擇**建立政策**。

      您現在已建立許可政策。

1. 建立建置角色，如下所示：

   1. 在導覽窗格中，選擇**角色**，然後選擇**建立角色**。

   1. 選擇**自訂信任政策**。

   1. 刪除現有的自訂信任政策。

   1. 新增下列自訂信任政策：

   1. 選擇**下一步**。

   1. 在**許可政策**中，搜尋`codecatalyst-s3-build-policy`並選取其核取方塊。

   1. 選擇**下一步**。

   1. 針對**角色名稱**，輸入：

      ```
      codecatalyst-s3-build-role
      ```

   1. 針對**角色描述**，輸入：

      ```
      CodeCatalyst build role
      ```

   1. 選擇建**立角色**。

   您現在已建立具有信任政策和許可政策的建置角色。

## 步驟 2：建立 Amazon S3 儲存貯體
<a name="build-deploy-tut-artifact"></a>

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

**建立 Amazon S3 儲存貯體**

1. 開啟位於 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。

1. 在主窗格中，選擇**建立儲存貯**體。

1. 針對**儲存貯體名稱**，輸入：

   ```
   codecatalyst-artifact-bucket
   ```

1. 對於 **AWS 區域**，選擇一個區域。本教學假設您選擇了**美國西部 （奧勒岡） us-west-2**。如需 Amazon S3 支援之區域的相關資訊，請參閱《》中的 [Amazon Simple Storage Service 端點和配額](https://docs.aws.amazon.com/general/latest/gr/s3.html)*AWS 一般參考*。

1. 在頁面底部，選擇**建立儲存貯**體。

1. 複製您剛建立的儲存貯體名稱，例如：

   ```
   codecatalyst-artifact-bucket
   ```

您現在在美國西部 （奧勒岡） us-west-2 區域中建立了名為 **codecatalyst-artifact-bucket**的儲存貯體。

## 步驟 3：建立來源儲存庫
<a name="deploy-tut-lambda-cfn-source"></a>

在此步驟中，您會在 CodeCatalyst 中建立來源儲存庫。此儲存庫用於存放教學課程的工作流程定義檔案。

如需來源儲存庫的詳細資訊，請參閱 [建立來源儲存庫](source-repositories-create.md)。

**建立來源儲存庫**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 導覽至您的專案 `codecatalyst-artifact-project`。

1. 在導覽窗格中，選擇**程式碼**，然後選擇**來源儲存庫**。

1. 選擇**新增儲存庫**，然後選擇**建立儲存庫**。

1. 在**儲存庫名稱**中，輸入：

   ```
   codecatalyst-artifact-source-repository
   ```

1. 選擇**建立**。

您現在已建立名為 的儲存庫`codecatalyst-artifact-source-repository`。

## 步驟 4：建立工作流程
<a name="build-deploy-tut-workflow.title"></a>

在此步驟中，您會建立工作流程，其中包含下列循序執行的建置區塊：
+ 觸發條件 – 當您將變更推送至來源儲存庫時，此觸發條件會自動啟動工作流程執行。如需觸發程序的詳細資訊，請參閱 [使用觸發程序自動啟動工作流程執行](workflows-add-trigger.md)。
+ 名為 的建置動作 `GenerateFiles` – 在觸發時，`GenerateFiles`動作會建立兩個檔案 `Hello.txt`和 `Goodbye.txt`，並將它們封裝成名為 的輸出成品`codecatalystArtifact`。
+ 另一個名為 的建置動作 `Upload` – `GenerateFiles`動作完成時， `Upload`動作會執行 AWS CLI 命令，將 `codecatalystArtifact`和來源儲存庫中的檔案`aws s3 sync`上傳至 Amazon S3 儲存貯體。在 CodeCatalyst 運算平台上 AWS CLI 預先安裝並預先設定 ，因此您不需要安裝或設定它。

  如需 CodeCatalyst 運算平台上預先封裝軟體的詳細資訊，請參閱 [指定執行時間環境映像](build-images.md)。如需 AWS CLI`aws s3 sync`命令的詳細資訊，請參閱《 *AWS CLI 命令參考*》中的[同步](https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html)。

如需建置動作的詳細資訊，請參閱 [使用工作流程建置](build-workflow-actions.md)。

**建立工作流程**

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇**建立工作流程**。

1. 刪除 YAML 範例程式碼。

1. 新增下列 YAML 程式碼：
**注意**  
在接下來的 YAML 程式碼中，您可以視需要省略 `Connections:`區段。如果您省略本節，您必須確保環境中**預設 IAM 角色**欄位中指定的角色包含 中所述的許可和信任政策[步驟 1：建立 AWS 角色](#build-deploy-tut-role)。如需使用預設 IAM 角色設定環境的詳細資訊，請參閱 [建立環境](deploy-environments-creating-environment.md)。

   ```
   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
   ```

   在上述程式碼中，取代：
   + *codecatalyst-artifact-environment*，其中包含您在 中建立的環境名稱[先決條件](#build-deploy-tut-prereqs)。
   + *codecatalyst-account-connection*，其中包含您在 中建立的帳戶連線名稱[先決條件](#build-deploy-tut-prereqs)。
   + *codecatalyst-s3-build-role*，其中包含您在 中建立的建置角色名稱[步驟 1：建立 AWS 角色](#build-deploy-tut-role)。
   + *codecatalyst-artifact-bucket*，內含您在 中建立的 Amazon S3 名稱[步驟 2：建立 Amazon S3 儲存貯體](#build-deploy-tut-artifact)。

   如需此檔案中屬性的相關資訊，請參閱 [建置和測試動作 YAML](build-action-ref.md)。

1. （選用） 選擇**驗證**，以確保 YAML 程式碼在遞交之前有效。

1. 選擇 **Commit** (遞交)。

1. 在**遞交工作流程**對話方塊中，輸入下列內容：

   1. 對於**工作流程檔案名稱**，請保留預設值 `codecatalyst-artifact-workflow`。

   1. 針對**遞交訊息**，輸入：

      ```
      add initial workflow file
      ```

   1. 針對**儲存庫**，選擇 **codecatalyst-artifact-source-repository**。

   1. 針對**分支名稱**，選擇**主要**。

   1. 選擇 **Commit** (遞交)。

   您現在已建立工作流程。由於工作流程頂端定義的觸發條件，工作流程執行會自動啟動。具體而言，當您將`codecatalyst-artifact-workflow.yaml`檔案遞交 （並推送） 到您的來源儲存庫時，觸發會啟動工作流程執行。

**檢視進行中工作流程執行**

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇您剛建立的工作流程：`codecatalyst-artifact-workflow`。

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

1. 選擇**上傳**以查看第二個建置動作進度。

1. 當**上傳**動作完成時，請執行下列動作：
   + 如果工作流程執行成功，請前往下一個程序。
   + 如果工作流程執行失敗，請選擇**日誌**來疑難排解問題。

## 步驟 5：驗證結果
<a name="build-deploy.s3.verify"></a>

工作流程執行後，請前往 Amazon S3 服務並查看您的 *codecatalyst-artifact-bucket* 儲存貯體。現在應該包含下列檔案和資料夾：

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

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

## 清除
<a name="deploy-tut-lambda-cfn-clean-up"></a>

在 CodeCatalyst 和 中清除 AWS ，以避免支付這些服務的費用。

**在 CodeCatalyst 中清除**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

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

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

**在 中清除 AWS**

1. 在 Amazon S3 中清除，如下所示：

   1. 開啟位於 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。

   1. 刪除儲存`codecatalyst-artifact-bucket`貯體中的檔案。

   1. 刪除儲存`codecatalyst-artifact-bucket`貯體。

1. 在 IAM 中清除，如下所示：

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

   1. 刪除`codecatalyst-s3-build-policy`。

   1. 刪除`codecatalyst-s3-build-role`。