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 (輸入) 欄位中的數值會直接傳遞至狀態機輸入。

    選取「常值」時,「輸入」欄位的範例項目:

    {"action": "test"}
  • FilePath:由「輸入」欄位指定之輸入成品中的檔案內容,用作狀態機器執行的輸入。設定為時 InputType,需要輸入人工因素FilePath

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

    assets/input.json
輸入

必要:有條件

  • 常值:當設定InputType為「常值」(預設值) 時,此欄位為選擇性欄位。

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

  • FilePath:當設定InputType為時 FilePath,此欄位為必要欄位。

    設定為時 InputType,也需要輸入人工因素FilePath

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

Input artifacts (輸入成品)

  • 人工因素數目:0 to 1

  • 描述:如果設定InputTypeFilePath,則需要此成品,並用來取得狀態機器執行的輸入。

輸出成品

  • 人工因素數目:0 to 1

  • 描述:

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

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

輸出變數

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

如需詳細資訊,請參閱 Variables

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為「文字」時,會使用「入動作」組態欄位的內容做為狀態機器的輸入。當沒有提供常值輸入時,狀態機器執行會使用空的 JSON 物件 {}。如需有關在不輸入的情況下執行狀態機器執行的詳細資訊,請參閱 Step Functions StartExecution API

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

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

標準狀態機器

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

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

錯誤處理

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

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

    注意

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

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

快速狀態機器

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

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

  • 您無法指定輸出成品。

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

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

錯誤處理

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

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