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 状态机的模板,您必须使用版本 0.52.0 或更高版本Amazon SAMCLI。要检查您具有的版本,请运行命令sam --version.

语法

要在您的中声明此实体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

属性

Definition

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

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

您必须提供Definition或者DefinitionUri.

类型:Map

必需:条件

Amazon CloudFormation兼容性:该属性对是唯一的Amazon SAM而且没有Amazon CloudFormation等效函数。

DefinitionSubstitutions

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

类型:Map

必需:否

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

DefinitionUri

写入的状态机定义的 Amazon Simple Storage Service (Amazon S3) URI 或本地文件路径Amazon States Language.

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

您必须提供Definition或者DefinitionUri.

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

字符串到字符串映射,该映射指定添加到状态机的标签以及相应的执行角色。有关标签的有效键词和值的信息,请参阅标签的财产AWS::StepFunctions::StateMachine资源。

类型:Map

必需:否

Amazon CloudFormation兼容性:此属性类似于Tags的财产AWS::StepFunctions::StateMachine资源。Amazon SAM会自动添加stateMachine:createdBy:SAM标签到此资源以及为其生成的默认角色。

Tracing

选择是否Amazon X-Ray已为状态机启用。有关将 X-Ray 结合使用的更多信息,请参阅。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

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

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

Fn::GetAtt

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

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

Name

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

示例

状态机定义文件

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

在此示例中,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 SAMJSON 中的模板文件。

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