AWS Step Functions 叫用動作參考 - AWS CodePipeline

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

AWS Step Functions 叫用動作參考

執行下列 AWS CodePipeline 動作:

  • 從管道啟動 AWS Step Functions 狀態機器執行。

  • 透過動作組態中的屬性或位於管道成品中做為輸入傳遞的檔案,為狀態機器提供初始狀態。

  • 選擇性地設定執行 ID 字首,以識別源自動作的執行。

  • 支援標準和快速狀態機器。

注意

Step Functions 動作在 Lambda 上執行,因此具有與 Lambda 函數的成品大小配額相同的成品大小配額。如需詳細資訊,請參閱 Lambda 開發人員指南中的 Lambda 配額

動作類型

  • 類別:Invoke

  • 擁有者:AWS

  • 提供者:StepFunctions

  • 版本:1

組態參數

StateMachineArn

必要:是

要叫用之狀態機器的 Amazon Resource Name (ARN)。

ExecutionNamePrefix

必要:否

依預設,動作執行 ID 會用作為狀態機執行名稱。如果有提供字首,會與連字號用於動作執行 ID 的前綴,並一起用作為狀態機執行名稱。

myPrefix-1624a1d1-3699-43f0-8e1e-6bafd7fde791

對於快速狀態機器,名稱應該只包含 0-9、A-Z、a-z、- 和 _。

InputType

必要:否

  • Literal (常值) (預設):指定此項時,Input (輸入) 欄位中的數值會直接傳遞至狀態機輸入。

    選取 Literal輸入欄位的範例項目:

    {"action": "test"}
  • FilePath輸入欄位所指定之輸入成品中的檔案內容會用作狀態機器執行的輸入。InputType 將 設定為 時,需要輸入成品FilePath

    FilePath 選取 時輸入欄位的範例項目:

    assets/input.json
輸入

必要:有條件

  • 文字 InputType當 設定為文字 (預設) 時,此欄位為選用。

    如果有提供此項,input (輸入) 欄位會直接用作為狀態機器執行的輸入。否則,狀態機器會叫用空JSON物件 {}

  • FilePathInputType當 設定為 時FilePath,此欄位為必填欄位。

    InputType 設定為 時,輸入成品也是必要的FilePath

    在指定的輸入成品中的檔案內容會用作為狀態機器執行的輸入。

Input artifacts (輸入成品)

  • 成品數量: 0 to 1

  • 描述:如果 InputType 設定為 FilePath,則需要此成品,並用於尋找狀態機器執行的輸入。

輸出成品

  • 成品數量: 0 to 1

  • 描述:

    • 標準狀態機器:如果有提供此項,則會使用狀態機器的輸出填入輸出成品。這是在狀態機器成功完成執行後,從 Step Functions DescribeExecution API 回應的 output 屬性取得。

    • 快速狀態機器:不支援。

輸出變數

此動作會產生輸出變數,並且可供管道中下游動作的動作組態進行參考。

如需詳細資訊,請參閱變數參考

StateMachineArn

狀態機器ARN的 。

ExecutionArn

狀態機器ARN執行的 。僅限標準狀態機器。

動作組態範例

預設輸入的範例

YAML
Name: ActionName ActionTypeId: Category: Invoke Owner: AWS Version: 1 Provider: StepFunctions OutputArtifacts: - Name: myOutputArtifact Configuration: StateMachineArn: arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine ExecutionNamePrefix: my-prefix
JSON
{ "Name": "ActionName", "ActionTypeId": { "Category": "Invoke", "Owner": "AWS", "Version": 1, "Provider": "StepFunctions" }, "OutputArtifacts": [ { "Name": "myOutputArtifact" } ], "Configuration": { "StateMachineArn": "arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine", "ExecutionNamePrefix": "my-prefix" } }

常值輸入的範例

YAML
Name: ActionName ActionTypeId: Category: Invoke Owner: AWS Version: 1 Provider: StepFunctions OutputArtifacts: - Name: myOutputArtifact Configuration: StateMachineArn: arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine ExecutionNamePrefix: my-prefix Input: '{"action": "test"}'
JSON
{ "Name": "ActionName", "ActionTypeId": { "Category": "Invoke", "Owner": "AWS", "Version": 1, "Provider": "StepFunctions" }, "OutputArtifacts": [ { "Name": "myOutputArtifact" } ], "Configuration": { "StateMachineArn": "arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine", "ExecutionNamePrefix": "my-prefix", "Input": "{\"action\": \"test\"}" } }

輸入檔案的範例

YAML
Name: ActionName InputArtifacts: - Name: myInputArtifact ActionTypeId: Category: Invoke Owner: AWS Version: 1 Provider: StepFunctions OutputArtifacts: - Name: myOutputArtifact Configuration: StateMachineArn: 'arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine' ExecutionNamePrefix: my-prefix InputType: FilePath Input: assets/input.json
JSON
{ "Name": "ActionName", "InputArtifacts": [ { "Name": "myInputArtifact" } ], "ActionTypeId": { "Category": "Invoke", "Owner": "AWS", "Version": 1, "Provider": "StepFunctions" }, "OutputArtifacts": [ { "Name": "myOutputArtifact" } ], "Configuration": { "StateMachineArn": "arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine", "ExecutionNamePrefix": "my-prefix", "InputType": "FilePath", "Input": "assets/input.json" } }

Behavior (行為)

在 版本期間, 會使用動作組態中指定的輸入 CodePipeline 來執行設定的狀態機器。

InputType 設定為 Literal 時,輸入動作組態欄位的內容會用作狀態機器的輸入。未提供常值輸入時,狀態機器執行會使用空JSON物件 {}。如需在沒有輸入的情況下執行狀態機器執行的詳細資訊,請參閱步驟函數 StartExecution API

InputType 設定為 時FilePath,動作會解壓縮輸入成品,並使用輸入動作組態欄位中指定的檔案內容作為狀態機器的輸入。指定 FilePath 時,輸入欄位為必要欄位,且必須存在輸入成品;否則,動作會失敗。

成功啟動執行後,行為將分歧為兩種狀態機類型,「標準」和「快速」

標準狀態機器

如果標準狀態機器執行成功啟動, 會 CodePipeline 輪詢 ,DescribeExecutionAPI直到執行達到終端機狀態為止。如果執行成功完成,表示動作成功;否則會失敗。

如果已設定輸出成品,該成品將包含狀態機器的傳回值。這是在狀態機器成功完成執行後,從 Step Functions DescribeExecution API 回應的 output 屬性取得。請注意,此 強制執行輸出長度限制API。

錯誤處理

  • 如果該動作無法啟動狀態機器執行,則動作執行會失敗。

  • 如果狀態機器執行無法在 CodePipeline Step Functions 動作達到逾時 (預設為 7 天) 之前達到終端機狀態,則動作執行會失敗。儘管發生此類失敗,狀態機器可能會繼續執行。如需 Step Functions 中狀態機器執行逾時的詳細資訊,請參閱標準與快速工作流程。

    注意

    您可以為具有動作的帳戶要求增加叫用動作逾時的配額。不過,增加配額會套用至該帳戶所有區域中此類型的所有動作。

  • 如果狀態機器執行達到 FAILED、TIMED_ OUT或 的終端機狀態ABORTED,動作執行會失敗。

快速狀態機器

如果快速狀態機器執行啟動成功,叫用動作執行會成功完成。

針對快速狀態機器設定的動作考量:

  • 您無法指定輸出成品。

  • 該動作不會等待狀態機器執行完成。

  • 在 中啟動動作執行後 CodePipeline,即使狀態機器執行失敗,動作執行也會成功。

錯誤處理

  • 如果 CodePipeline 無法啟動狀態機器執行,動作執行會失敗。否則,該動作會立即成功。 CodePipeline 無論狀態機器執行需要多長時間才能完成或其結果, 動作都會在 中成功。

以下相關資源可協助您使用此動作。