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

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

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

在本教學課程中,您將了解如何使用包含幾個建置動作的 Amazon 工作流程,將成品上傳至 Amazon S3 儲存貯體。 CodeCatalyst 工作流程這些動作會在工作流程啟動時串聯執行。第一個建置動作會產生兩個檔案 Hello.txtGoodbye.txt,並將其封裝為建置成品。第二個建置動作會將成品上傳至 Amazon S3。您將設定工作流程,在每次將遞交推送至來源儲存庫時執行。

必要條件

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

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

  • 在空間中,您需要一個名為 的空專案:

    codecatalyst-artifact-project

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

    如需詳細資訊,請參閱在 Amazon 中建立空專案 CodeCatalyst

  • 在專案中,您需要一個 CodeCatalyst 名為:

    codecatalyst-artifact-environment

    設定此環境,如下所示:

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

    • 將您的帳戶連接至該 AWS 帳戶。

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

    如需詳細資訊,請參閱部署至 AWS 帳戶 和 VPCs

步驟 1:建立 AWS 角色

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

注意

如果您已經擁有為另一個教學課程建立的建置角色,也可以將其用於此教學課程。只需確定其具有下列程序所示的許可和信任政策即可。

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

建立建置角色
  1. 建立角色的政策,如下所示:

    1. 登入 AWS。

    2. 在 開啟IAM主控台https://console.aws.amazon.com/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. 選擇 Next (下一步)

    6. 許可政策 中,搜尋codecatalyst-s3-build-policy並選取其核取方塊。

    7. 選擇 Next (下一步)

    8. 針對角色名稱 ,輸入:

      codecatalyst-s3-build-role
    9. 針對角色描述 ,輸入:

      CodeCatalyst build role
    10. 選擇建立角色

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

步驟 2:建立 Amazon S3 儲存貯體

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

建立 Amazon S3 儲存貯體
  1. 在 開啟 Amazon S3 主控台https://console.aws.amazon.com/s3/

  2. 在主窗格中,選擇建立儲存貯體

  3. 針對儲存貯體名稱 ,輸入:

    codecatalyst-artifact-bucket
  4. 對於 AWS 區域,選擇一個區域。本教學假設您選擇了美國西部 (奧勒岡) us-west-2。如需 Amazon S3 支援之區域的相關資訊,請參閱 中的 Amazon Simple Storage Service 端點和配額AWS 一般參考

  5. 在頁面底部,選擇建立儲存貯體

  6. 複製您剛建立的儲存貯體名稱,例如:

    codecatalyst-artifact-bucket

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

步驟 3:建立來源儲存庫

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

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

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

  2. 導覽至您的專案 codecatalyst-artifact-project

  3. 在導覽窗格中,選擇程式碼 ,然後選擇來源儲存庫

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

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

    codecatalyst-artifact-source-repository
  6. 選擇 Create (建立)。

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

步驟 4:建立工作流程

在此步驟中,您會建立工作流程,其中包含下列依次執行的建置區塊:

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

  • 名為 的建置動作 GenerateFiles – 在觸發時,GenerateFiles動作會建立兩個檔案 Hello.txtGoodbye.txt,並將其封裝為名為 的輸出成品codecatalystArtifact

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

    如需 CodeCatalyst 運算平台上預先封裝軟體的詳細資訊,請參閱 指定執行環境影像。如需 AWS CLIaws s3 sync命令的詳細資訊,請參閱 AWS CLI 命令參考 中的同步

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

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

  2. 選擇建立工作流程

  3. 刪除YAML範例程式碼。

  4. 新增下列YAML程式碼:

    注意

    在下面的YAML程式碼中,您可以視需要省略 Connections:區段。如果省略本節,您必須確保環境中預設角色欄位中指定的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. Commit 工作流程對話方塊中,輸入下列內容:

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

    2. 對於 Commit 訊息 ,輸入:

      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 檔案是因為它們位於您的來源儲存庫中。

清除

在 中清除 AWS CodeCatalyst ,以避免收取這些服務的費用。

若要在 中清除 CodeCatalyst
  1. 在 https://https://codecatalyst.aws/ 開啟 CodeCatalyst 主控台。

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

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

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

    1. 在 開啟 Amazon S3 主控台https://console.aws.amazon.com/s3/

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

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

  2. 在 中清除IAM,如下所示:

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

    2. 刪除codecatalyst-s3-build-policy

    3. 刪除codecatalyst-s3-build-role