AWS::Serverless::StateMachine - AWS Serverless Application Model

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

AWS::Serverless::StateMachine

建立 AWS Step Functions 狀態機器,您可以使用它來協調 AWS Lambda 函數和其他 AWS 資源,以形成複雜且強大的工作流程。

如需 Step Functions 的詳細資訊,請參閱《AWS Step Functions 開發人員指南》。

注意

當您部署到 時 AWS CloudFormation, 會將您的 AWS SAM 資源 AWS SAM 轉換為 CloudFormation 資源。如需詳細資訊,請參閱為 產生 CloudFormation 資源 AWS SAM

語法

若要在 AWS Serverless Application Model (AWS SAM) 範本中宣告此實體,請使用下列語法。

YAML

Type: AWS::Serverless::StateMachine Properties: AutoPublishAlias: String UseAliasAsEventTarget: Boolean Definition: Map DefinitionSubstitutions: Map DefinitionUri: String | S3Location DeploymentPreference: DeploymentPreference Events: EventSource Logging: LoggingConfiguration Name: String PermissionsBoundary: String Policies: String | List | Map PropagateTags: Boolean RolePath: String Role: String Tags: Map Tracing: TracingConfiguration Type: String

Properties

AutoPublishAlias

狀態機器別名的名稱。若要進一步了解如何使用 Step Functions 狀態機器別名,請參閱《 AWS Step Functions 開發人員指南》中的使用版本和別名管理持續部署

使用 DeploymentPreference設定別名的部署偏好設定。如果您未指定 DeploymentPreference, AWS SAM 會設定流量一次轉移到較新的狀態機器版本。

AWS SAM Retain 根據預設, 會將版本的 DeletionPolicyUpdateReplacePolicy 設為 。舊版不會自動刪除。

類型:字串

必要:否

CloudFormation 相容性:此屬性會直接傳遞至 AWS::StepFunctions::StateMachineAlias 資源的 Name 屬性。

UseAliasAsEventTarget

指出是否將使用 AutoPublishAlias 屬性建立的別名傳遞至以 Events 定義的事件來源目標。

指定 True以使用別名做為事件的目標。

類型:布林值

必要:否

預設False

CloudFormation 相容性:此屬性對 是唯一的 AWS SAM ,並且沒有 CloudFormation 同等的。

Definition

狀態機器定義是一個物件,其中物件的格式與您的 AWS SAM 範本檔案格式相符,例如 JSON 或 YAML。狀態機器定義遵循 Amazon 狀態語言

如需內嵌狀態機器定義的範例,請參閱 範例

您必須提供 DefinitionDefinitionUri

類型:映射

必要:有條件

CloudFormation 相容性:此屬性對 是唯一的 AWS SAM ,並且沒有 CloudFormation 同等屬性。

DefinitionSubstitutions

string-to-string映射,指定狀態機器定義中預留位置變數的映射。這可讓您將執行時間取得的值 (例如,從內部函數) 注入狀態機器定義。

類型:映射

必要:否

CloudFormation 相容性:此屬性類似於 AWS::StepFunctions::StateMachine 資源的 DefinitionSubstitutions 屬性。如果在內嵌狀態機器定義中指定任何內部函數, 會將項目 AWS SAM 新增至此屬性,以將其插入狀態機器定義。

DefinitionUri

Amazon Simple Storage Service (Amazon S3) URI 或以 Amazon States Language 撰寫之狀態機器定義的本機檔案路徑。

如果您提供本機檔案路徑,範本必須經過包含 sam deploysam package命令的工作流程,才能正確轉換定義。若要這樣做,您必須使用 0.52.0 版或更新版本的 AWS SAM CLI。

您必須提供 DefinitionDefinitionUri

類型:字串 | S3Location

必要:有條件

CloudFormation 相容性:此屬性會直接傳遞至 AWS::StepFunctions::StateMachine 資源的 DefinitionS3Location 屬性。

DeploymentPreference

啟用和設定漸進式狀態機器部署的設定。若要進一步了解 Step Functions 逐步部署,請參閱《 AWS Step Functions 開發人員指南》中的使用版本和別名管理持續部署

在設定此屬性AutoPublishAlias之前,請指定 。您的DeploymentPreference設定將套用至以 指定的別名AutoPublishAlias

當您指定 時DeploymentPreference, 會自動 AWS SAM 產生StateMachineVersionArn子屬性值。

類型DeploymentPreference

必要:否

CloudFormation compatibility: AWS SAM 產生StateMachineVersionArn屬性值並將其連接至 AWS::StepFunctions::StateMachineAlias 資源的 DeploymentPreference 屬性DeploymentPreference,並將其傳遞DeploymentPreference至 。

Events

指定觸發此狀態機器的事件。事件由類型和一組屬性組成,這些屬性取決於類型。

類型EventSource

必要:否

CloudFormation 相容性:此屬性對 是唯一的 AWS SAM ,並且沒有 CloudFormation 同等的。

Logging

定義記錄哪些執行歷史記錄事件及其記錄位置。

類型LoggingConfiguration

必要:否

CloudFormation 相容性:此屬性會直接傳遞至 AWS::StepFunctions::StateMachine 資源的 LoggingConfiguration 屬性。

Name

狀態機器的名稱。

類型:字串

必要:否

CloudFormation 相容性:此屬性會直接傳遞至 AWS::StepFunctions::StateMachine 資源的 StateMachineName 屬性。

PermissionsBoundary

用於此狀態機器執行角色的許可界限 ARN。此屬性只有在為您產生角色時才有效。

類型:字串

必要:否

CloudFormation 相容性:此屬性會直接傳遞至 AWS::IAM::Role 資源的 PermissionsBoundary 屬性。

Policies

此狀態機器的許可政策。政策會附加至狀態機器的預設 AWS Identity and Access Management (IAM) 執行角色。

此屬性接受單一值或值清單。允許數值包括:

注意

如果您設定 Role 屬性,則會忽略此屬性。

類型:字串 | 清單 | 映射

必要:否

CloudFormation 相容性:此屬性對 是唯一的 AWS SAM ,並且沒有 CloudFormation 同等屬性。

PropagateTags

指出是否要將標籤從 Tags 屬性傳遞至您AWS::Serverless::StateMachine產生的資源。指定 True 在產生的資源中傳播標籤。

類型:布林值

必要:否

預設False

CloudFormation 相容性:此屬性對 是唯一的 AWS SAM ,並且沒有 CloudFormation 同等的。

Role

做為此狀態機器執行角色的 IAM 角色 ARN。

類型:字串

必要:有條件

CloudFormation 相容性:此屬性會直接傳遞至 AWS::StepFunctions::StateMachine 資源的 RoleArn 屬性。

RolePath

狀態機器 IAM 執行角色的路徑。

為您產生角色時,請使用此屬性。使用 Role 屬性指定角色時,請勿使用 。

類型:字串

必要:有條件

CloudFormation 相容性:此屬性會直接傳遞至 AWS::IAM::Role 資源的 Path 屬性。

Tags

string-to-string映射,指定新增至狀態機器和對應執行角色的標籤。如需標籤有效索引鍵和值的資訊,請參閱 AWS::StepFunctions::StateMachine 資源的標籤屬性。

類型:映射

必要:否

CloudFormation 相容性:此屬性類似於 Tags AWS::StepFunctions::StateMachine resource. AWS SAM automatically 新增stateMachine:createdBy:SAM標籤至此資源,以及為其產生的預設角色。

Tracing

選取是否 AWS X-Ray 已啟用狀態機器。如需搭配 Step Functions 使用 X-Ray 的詳細資訊,請參閱《 AWS Step Functions 開發人員指南》中的 AWS X-Ray 和 Step Functions

類型TracingConfiguration

必要:否

CloudFormation 相容性:此屬性會直接傳遞至 AWS::StepFunctions::StateMachine 資源的 TracingConfiguration 屬性。

Type

狀態機器的類型。

有效值STANDARDEXPRESS

類型:字串

必要:否

預設STANDARD

CloudFormation 相容性:此屬性會直接傳遞至 AWS::StepFunctions::StateMachine 資源的 StateMachineType 屬性。

傳回值

Ref

當您將此資源的邏輯 ID 提供給 Ref 內部函數時,Ref 會傳回基礎AWS::StepFunctions::StateMachine資源的 Amazon Resource Name (ARN)。

如需使用 Ref函數的詳細資訊,請參閱AWS CloudFormation 《 使用者指南Ref》中的 。

Fn::GetAtt

Fn::GetAtt 會傳回此類型之指定屬性的值。以下為可用屬性及傳回值的範例。

如需使用 的詳細資訊Fn::GetAtt,請參閱AWS CloudFormation 《 使用者指南Fn::GetAtt》中的 。

Name

傳回狀態機器的名稱,例如 HelloWorld-StateMachine

範例

狀態機器定義檔案

以下是內嵌狀態機器定義的範例,允許 lambda 函數叫用狀態機器。請注意,此範例預期 Role 屬性會設定適當的政策以允許呼叫。my_state_machine.asl.json 檔案必須以 Amazon States 語言撰寫。

在此範例中,DefinitionSubstitution項目允許狀態機器在 AWS SAM 範本檔案中包含宣告的資源。

YAML

MySampleStateMachine: Type: AWS::Serverless::StateMachine Properties: DefinitionUri: statemachine/my_state_machine.asl.json Role: arn:aws:iam::123456123456:role/service-role/my-sample-role Tracing: Enabled: true DefinitionSubstitutions: MyFunctionArn: !GetAtt MyFunction.Arn MyDDBTable: !Ref TransactionTable

內嵌狀態機器定義

以下是內嵌狀態機器定義的範例。

在此範例中, AWS SAM 範本檔案是以 YAML 撰寫,因此狀態機器定義也以 YAML 表示。若要以 JSON 宣告內嵌狀態機器定義,請以 JSON 撰寫 AWS SAM 範本檔案。

YAML

MySampleStateMachine: Type: AWS::Serverless::StateMachine Properties: Definition: StartAt: MyLambdaState States: MyLambdaState: Type: Task Resource: arn:aws:lambda:us-east-1:123456123456:function:my-sample-lambda-app End: true Role: arn:aws:iam::123456123456:role/service-role/my-sample-role Tracing: Enabled: true