AWS::Serverless::StateMachine - Amazon Serverless Application Model
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS::Serverless::StateMachine

创建Amazon Step Functions状态机,您可以使用它来编排Amazon Lambda函数和其他Amazon资源,以形成复杂而强大的工作流程。

有关 Step Functions 的更多信息,请参阅Amazon Step Functions开发人员指南.

注意:管理Amazon SAM模板中包含 Step Functions 状态机,您必须使用Amazon SAMCLI。要检查您具有的版本,请运行命令sam --version.

Syntax

要在Amazon Serverless Application Model(Amazon SAM) 模板,请使用以下语法。

YAML

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

Properties

Definition

状态机定义是一个对象,其中的对象格式与Amazon SAM模板文件,例如 JSON 或 YAML。状态机定义遵循 Amazon 状态语言

有关内联状态机定义的示例,请参阅Examples.

您必须提供DefinitionDefinitionUri.

类型:映射

必需:条件

Amazon CloudFormation兼容性:对是唯一的。Amazon SAM并不提供Amazon CloudFormation等效函数

DefinitionSubstitutions

一个字符串到字符串映射,指定状态机定义中占位符变量的映射。这使您可以将在运行时获得的值(例如,从内部函数)注入状态机定义。

类型:映射

必需:否

Amazon CloudFormation兼容性:此属性类似于DefinitionSubstitutions属性AWS::StepFunctions::StateMachine资源。如果在内联状态机定义中指定了任何内部函数,Amazon SAM将条目添加到此属性中,以将它们注入到状态机定义中。

DefinitionUri

Amazon Simple Storage Service (Amazon S3) URI 或状态机定义的本地文件路径写在Amazon 状态语言.

如果您提供了本地文件路径,则模板必须通过包含sam deploy或者sam package命令来正确转换定义。为此,您必须使用 0.52.0 版或更高版本的Amazon SAMCLI。

您必须提供DefinitionDefinitionUri.

类型:字符串 |S3 位置

必需:条件

Amazon CloudFormation兼容性:此属性将直接传递给DefinitionS3Location属性AWS::StepFunctions::StateMachine资源。

Events

指定触发此状态机的事件。事件由一个类型和一组取决于类型的属性组成。

类型EventSource

必需:否

Amazon CloudFormation兼容性:对是唯一的。Amazon SAM并不提供Amazon CloudFormation等效函数

Logging

定义记录哪些执行历史事件以及它们的记录位置。

类型LoggingConfiguration

必需:否

Amazon CloudFormation兼容性:此属性将直接传递给LoggingConfiguration属性AWS::StepFunctions::StateMachine资源。

Name

状态机的名称。

类型:字符串

必需:否

Amazon CloudFormation兼容性:此属性将直接传递给StateMachineName属性AWS::StepFunctions::StateMachine资源。

PermissionsBoundary

用于此状态机执行角色的权限边界的 ARN。仅当为您生成角色时,此属性才有效。

类型:字符串

必需:否

Amazon CloudFormation兼容性:此属性将直接传递给PermissionsBoundary属性AWS::IAM::Role资源。

Policies

此状态机的执行角色所需的一个或多个策略。

此属性接受单个字符串或字符串列表。该属性可以是Amazon托管Amazon Identity and Access Management(IAM) 策略、Amazon SAM策略模板或一个或多个格式为映射的内联策略文档。

您可以提供Role或者Policies.

如果Role属性,将忽略该属性。

类型:字符串 | 列表 | 地图

必需:条件

Amazon CloudFormation兼容性:对是唯一的。Amazon SAM并不提供Amazon CloudFormation等效函数

Role

用作此状态机执行角色的 IAM 角色的 ARN。

您必须提供Role或者Policies.

类型:字符串

必需:条件

Amazon CloudFormation兼容性:此属性将直接传递给RoleArn属性AWS::StepFunctions::StateMachine资源。

Tags

一个字符串到字符串映射,指定添加到状态机以及相应执行角色的标签。

类型:映射

必需:否

Amazon CloudFormation兼容性:此属性将直接传递给Tags属性AWS::StepFunctions::StateMachine资源。

Tracing

选择是否Amazon X-Ray状态机启用。有关将 X-Ray 与 Step Functions 结合使用的更多信息,请参阅Amazon X-Ray和 Step Functions中的Amazon Step Functions开发人员指南.

类型TracingConfiguration

必需:否

Amazon CloudFormation兼容性:此属性将直接传递给TracingConfiguration属性AWS::StepFunctions::StateMachine资源。

Type

状态机的类型。

有效值STANDARDEXPRESS

类型:字符串

必需:否

默认值STANDARD

Amazon CloudFormation兼容性:此属性将直接传递给StateMachineType属性AWS::StepFunctions::StateMachine资源。

返回值

Ref

当您将此资源的逻辑 ID 提供给 Ref 内部函数时,Ref 将返回底层AWS::StepFunctions::StateMachine资源。

有关使用的更多信息,Ref函数,请参阅Ref中的 Amazon CloudFormation 用户指南.

Fn::GetAtt

Fn::GetAtt 返回一个此类型指定属性的值。以下为可用属性和示例返回值。

有关使用的更多信息Fn::GetAtt,请参阅Fn::GetAtt中的 Amazon CloudFormation 用户指南.

Name

返回状态机的名称,如HelloWorld-StateMachine.

Examples

状态机定义文件

以下是使用定义文件定义的状态机的示例。这些区域有:my_state_machine.asl.json文件必须写入Amazon 状态语言.

在此示例中,DefinitionSubstitution条目允许状态机包含Amazon 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

内联状态机定义

以下是内联状态机定义的示例。

在此示例中,Amazon SAM模板文件是用 YAML 编写的,因此状态机定义也在 YAML 中。要在 JSON 中声明内联状态机定义,请编写Amazon 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