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 状态机器,您必须使用版本0.52.0或更高版本的 AWS SAM CLI。要检查您拥有哪个版本,请运行命令 sam --version.

语法

若要在您的 AWS 无服务器应用程序模型 (AWS SAM)模板,请使用以下语法。

YAML

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

属性

Definition

状态机定义是一个对象,对象的格式与 AWS SAM 模板文件,例如JSON或YAML。状态机器定义遵循 亚马逊州语言.

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

您必须提供 DefinitionDefinitionUri.

类型:Map

必需: 条件

AWS CloudFormation 兼容性: 此属性是 AWS SAM 并且没有 AWS CloudFormation 等效。

DefinitionSubstitutions

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

类型:Map

必需: 否

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

DefinitionUri

的 Amazon Simple Storage Service (人Amazon S3)在中写入的状态机器定义的URI或本地文件路径 亚马逊州语言.

如果您提供本地文件路径,模板必须通过包含 sam deploysam package 命令以正确转换定义。为此,您必须使用0.52.0或更高版本的 AWS SAM CLI。

您必须提供 DefinitionDefinitionUri.

类型:字符串| 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 资源。

Policies

此计算机的执行角色需要的一个或多个策略。

此属性接受单个字符串或字符串列表。酒店可以是 AWS 管理的 AWS Identity and Access Management (人IAM)政策, AWS SAM 策略模板,或一个或多个在线策略文档的格式为地图。

您提供 RolePolicies.

如果 Role 属性已设置,此属性将被忽略。

类型:字符串|列表|映射

必需: 条件

AWS CloudFormation 兼容性: 此属性是 AWS SAM 并且没有 AWS CloudFormation 等效。

Role

亚马逊资源名称(ARN) IAM 角色用作此状态计算机的执行角色。

您必须提供 RolePolicies.

类型:字符串

必需: 条件

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

Tags

字符串到字符串映射,用于指定添加到状态机的标记和相应的 IAM 执行角色。

类型:Map

必需: 否

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

Tracing

选择是否 AWS X-Ray 为状态机启用了。有关使用的更多信息 X-Ray 配 Step Functions,请参阅 AWS X-Ray 和 Step Functions 在 AWS Step Functions 开发者指南.

类型: TracingConfiguration

必需: 否

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

Type

状态机的类型。

有效值:STANDARDEXPRESS.

类型:字符串

必需: 否

默认值STANDARD

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

返回值

Ref

当您将此资源的逻辑ID提供给 Ref 内在功能 Ref 返回底层的Amazon资源名称(ARN) AWS::StepFunctions::StateMachine 资源。

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

Fn::GetAtt

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

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

Name

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

示例

状态机器定义文件

以下是使用定义文件定义的状态计算机的示例。的 my_state_machine.asl.json 文件必须写在 亚马逊州语言.

在本示例中, 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中声明在线状态机器定义,请编写您的 AWS SAM JSON中的模板文件。

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