

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

# 教學課程：在管道中使用 AWS Step Functions 叫用動作
<a name="tutorials-step-functions"></a>

您可以使用 AWS Step Functions 來建立和設定狀態機器。本教學示範如何將叫用動作新增至管道，從您的管道啟動狀態機執行。

**重要**  
在建立管道的過程中，CodePipeline 將使用客戶提供的 S3 成品儲存貯體來製作成品。（這與用於 S3 來源動作的 儲存貯體不同。) 如果 S3 成品儲存貯體位於與管道帳戶不同的帳戶中，請確定 S3 成品儲存貯體由 所擁有 AWS 帳戶 ，安全且可靠。

在本教學中，您將執行下列操作：
+ 在 中建立標準狀態機器 AWS Step Functions。
+ 直接輸入狀態機器輸入 JSON。您也可以將狀態機器輸入檔案上傳至 Amazon Simple Storage Service (Amazon S3) 儲存貯體。
+ 透過新增狀態機器動作來更新您的管道。

**Topics**
+ [先決條件：建立或選擇簡易管道](#tutorials-step-functions-prereq)
+ [步驟 1：建立範例狀態機器](#tutorials-step-functions-sample)
+ [步驟 2：將 Step Functions 叫用動作新增至您的管道](#tutorials-step-functions-pipeline)

## 先決條件：建立或選擇簡易管道
<a name="tutorials-step-functions-prereq"></a>

在本教學中，您會將叫用動作新增至現有管道。您可以使用在 [教學：建立簡易管道 (S3 儲存貯體)](tutorials-simple-s3.md) 或 [教學課程：建立簡單的管道 (CodeCommit 儲存庫）](tutorials-simple-codecommit.md) 中建立的管道。

您可以使用具有來源動作和至少有兩階段結構的現有管道，但在此範例中不使用來源成品。

**注意**  
您可能需要額外許可來更新管道所使用的服務角色，才能執行此動作。若要這樣做，請開啟 AWS Identity and Access Management (IAM) 主控台、尋找角色，然後將許可新增至角色的政策。如需詳細資訊，請參閱[將許可新增至 CodePipeline 服務角色](how-to-custom-role.md#how-to-update-role-new-services)。

## 步驟 1：建立範例狀態機器
<a name="tutorials-step-functions-sample"></a>

在 Step Functions 主控台中，使用`HelloWorld`範例範本建立狀態機器。如需說明，請參閱《 *AWS Step Functions 開發人員指南*》中的[建立狀態機器](https://docs.aws.amazon.com/step-functions/latest/dg/getting-started.html#create-state-machine)。

## 步驟 2：將 Step Functions 叫用動作新增至您的管道
<a name="tutorials-step-functions-pipeline"></a>

將 Step Functions 叫用動作新增至管道，如下所示：

1. 登入 AWS 管理主控台 並開啟 CodePipeline 主控台，網址為 https：//[http://console.aws.amazon.com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home)。

   與 AWS 您的帳戶相關聯的所有管道名稱都會顯示。

1. 在 **Name (名稱)** 中，選擇您想編輯的管道名稱。這會開啟管道的詳細檢視，包含管道中各階段的每項動作之每項狀態。

1. 在管道詳細資訊頁面上，選擇 **Edit (編輯)**。

1. 在簡易管道的第二階段，選擇 **Edit stage (編輯階段)**。選擇 **刪除**。這會刪除第二階段，因為您不再需要它。

1. 在圖表的底部，選擇 **\$1 Add stage (\$1 新增階段)**。

1. 在 **Stage name (階段名稱)** 中，輸入階段的名稱，例如 **Invoke**，然後選擇 **Add stage (新增階段)**。

1. 選擇 **\$1 Add action group (\$1 新增動作群組)**。

1. 在 **​Action name (動作名稱)** 中，輸入名稱，例如 **Invoke**。

1. 在**動作提供者**中，選擇**AWS 步驟函數**。允許 **Region (區域)** 預設為管道區域。

1. 在 **Input artifacts (輸入成品)** 中，選擇 `SourceArtifact`。

1. 在 **State machine ARN (狀態機器 ARN)** 中，為您先前建立的狀態機器選擇 Amazon Resource Name (ARN)。

1. (選用) 在 **Execution name prefix (執行名稱前綴)** 中，輸入要新增至狀態機器執行 ID 的前綴。

1. 在 **Input type (輸入類型)** 中，選擇 **Literal (常值)**。

1. 在 **Input (輸入)** 中，輸入 `HelloWorld` 範例狀態機器預期的輸入 JSON。
**注意**  
狀態機器執行的輸入與 CodePipeline 中用於描述動作輸入成品的術語不同。

   在本範例中，輸入下列 JSON：

   ```
   {"IsHelloWorldExample": true}
   ```

1. 選擇**完成**。

1. 在您正在編輯的階段上，選擇 **Done (完成)**。在 AWS CodePipeline 窗格中，選擇 **Save (儲存)**，然後在警告訊息中選擇 **Save (儲存)**。

1. 若要提交您的變更並啟動管道執行，請選擇 **​Release change (發行變更)**，然後選擇 **​Release (發行)**。

1. 在您完成的管道上，選擇叫用動作中的 **AWS Step Functions**。在 AWS Step Functions 主控台中，檢視您的狀態機器執行 ID。該 ID 會顯示您的狀態機器名稱 `HelloWorld` 和帶有前綴 `my-prefix` 的狀態機器執行 ID。

   ```
   arn:aws:states:us-west-2:account-ID:execution:HelloWorld:my-prefix-0d9a0900-3609-4ebc-925e-83d9618fcca1
   ```