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

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

AWS::Serverless::StateMachine

创建 AWS Step Functions 状态机,可用于协调 AWS Lambda 函数和其他 AWS 资源,以形成复杂而强大的工作流程。

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

注意:要管理包含 AWS SAM 状态机的 Step Functions 模板,您必须使用 AWS SAM CLI 的版本 0.52.0 或更高版本。要检查您拥有的版本,请运行命令 sam --version

语法

在您的 中声明此实体 AWS 无服务器应用程序模型 (AWS 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

属性

Definition

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

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

您必须提供 DefinitionDefinitionUri

类型:Map

必需: 条件

兼容性AWS CloudFormation:此属性对于 AWS SAM 是唯一的,没有等效的 AWS CloudFormation。

DefinitionSubstitutions

一个字符串到字符串映射,用于指定状态机定义中占位符变量的映射。这使您能够将在运行时获取的值(例如,来自内部函数的值)注入到状态机定义中。

类型:Map

必需: 否

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

DefinitionUri

用 Amazon Simple Storage ServiceAmazon 状态语言Amazon S3编写的状态机定义的 ) URI 或本地文件路径。

如果您提供了本地文件路径,则模板必须执行包含 sam deploysam package 命令的工作流程才能正确转换定义。为此,您必须使用 AWS SAM CLI 版本 0.52.0 或更高版本。

您必须提供 DefinitionDefinitionUri

类型: String | S3Location

必需: 条件

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

Events

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

类型: EventSource

必需: 否

兼容性AWS CloudFormation:此属性对于 AWS SAM 是唯一的,没有等效的 AWS CloudFormation。

Logging

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

类型: LoggingConfiguration

必需: 否

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

Name

状态机的名称。

类型:字符串

必需: 否

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

PermissionsBoundary

要用于此状态机的执行角色的权限边界的 ARN。此属性仅在为您生成角色时起作用。

类型:字符串

必需: 否

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

Policies

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

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

您需要提供 RolePolicies

如果设置了 Role 属性,则将忽略此属性。

类型:String | List | Map

必需: 条件

兼容性AWS CloudFormation:此属性对于 AWS SAM 是唯一的,没有等效的 AWS CloudFormation。

Role

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

您必须提供 RolePolicies

类型:字符串

必需: 条件

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

Tags

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

类型:Map

必需: 否

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

Tracing

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

类型: TracingConfiguration

必需: 否

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

Type

状态机的类型。

有效值STANDARD 或者 EXPRESS

类型:字符串

必需: 否

默认值STANDARD

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

返回值

Ref

当向 Ref 内部函数提供此资源的逻辑 ID 时,Ref 将返回底层 AWS::StepFunctions::StateMachine 资源的 Amazon 资源名称 (ARN)。

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

Fn::GetAtt

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

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

Name

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

示例

状态机定义文件

以下是使用定义文件定义的状态机的示例。文件必须用 my_state_machine.asl.jsonAmazon 状态语言编写。

在此示例中,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