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

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

AWS::Serverless::StateMachine

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

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

注意

部署到时 Amazon CloudFormation, Amazon SAM 会将您的 Amazon SAM 资源转换为 Amazon CloudFormation 资源。有关更多信息,请参阅 生成的 Amazon CloudFormation 资源

语法

要在 Amazon Serverless Application Model (Amazon SAM) 模板中声明此实体,请使用以下语法。

YAML

Type: AWS::Serverless::StateMachine Properties: AutoPublishAlias: String 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

属性

AutoPublishAlias

状态机别名的名称。要详细了解如何使用 Step Functions 状态机别名,请参阅《Amazon Step Functions 开发人员指南》中的使用版本与别名功能管理持续部署

使用 DeploymentPreference 为别名配置部署首选项。如果您未指定DeploymentPreference,则 Amazon SAM 会将流量配置为一次性切换到较新的状态机版本。

Amazon SAM 默认情况下,将版本UpdateReplacePolicyRetainDeletionPolicy和设置为。以前的版本不会被自动删除。

类型:字符串

必需:否

Amazon CloudFormation 兼容性:此属性直接传递给AWS::StepFunctions::StateMachineAlias资源的 Name属性。

Definition

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

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

您必须提供 DefinitionDefinitionUri

类型:映射

必需:条件

Amazon CloudFormation 兼容性:此属性是独有的 Amazon SAM ,没有 Amazon CloudFormation 等效属性。

DefinitionSubstitutions

在状态机定义中指定占位符变量的映射的 string-to-string 地图。这使您能够将运行时获得的值(例如,从内置函数)注入到状态机定义中。

类型:映射

必需:否

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

DefinitionUri

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

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

您必须提供 DefinitionDefinitionUri

类型:字符串 | S3Location

必需:条件

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

DeploymentPreference

启用和配置逐步状态机部署的设置。要详细了解 Step Functions 逐步部署,请参阅《Amazon Step Functions 开发人员指南》中的使用版本与别名功能管理持续部署

在配置此属性之前指定 AutoPublishAlias。您的 DeploymentPreference 设置将应用于通过 AutoPublishAlias 指定的别名。

指定后DeploymentPreference, Amazon SAM 会自动生成StateMachineVersionArn子属性值。

类型:DeploymentPreference

必需:否

Amazon CloudFormation 兼容性: Amazon SAM 生成StateMachineVersionArn属性值并将其附加到资源的DeploymentPreference属性,DeploymentPreference然后传递DeploymentPreferenceAWS::StepFunctions::StateMachineAlias资源的属性。

Events

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

类型:EventSource

必需:否

Amazon CloudFormation 兼容性:此属性是独有的 Amazon SAM ,没有 Amazon CloudFormation 等效属性。

Logging

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

类型:LoggingConfiguration

必需:否

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

Name

状态机的名称。

类型:字符串

必需:否

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

PermissionsBoundary

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

类型:字符串

必需:否

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

Policies

此状态机的权限策略。策略将附加到状态机的默认 Amazon Identity and Access Management (IAM) 执行角色中。

此属性接受单个值或值列表。允许的值包括:

注意

如果指定 Role 属性,则将忽略该属性。

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

必需:否

Amazon CloudFormation 兼容性:此属性是独有的 Amazon SAM ,没有 Amazon CloudFormation 等效属性。

PropagateTags

指明是否将 Tags 属性中的标签传递给 AWS::Serverless::StateMachine 生成的资源。指定 True 以在生成的资源中传播标签。

类型:布尔值

必需:否

默认值False

Amazon CloudFormation 兼容性:此属性是独有的 Amazon SAM ,没有 Amazon CloudFormation 等效属性。

Role

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

类型:字符串

必需:条件

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

RolePath

状态机的 IAM 执行角色的路径。

生成角色时请使用此属性。当使用 Role 属性指定角色时,请勿使用。

类型:字符串

必需:条件

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

Tags

指定添加到状态机的标签和相应的执行角色的 string-to-string 地图。有关标签的有效键和值的信息,请参阅 AWS::StepFunctions::StateMachine 资源的标签属性。

类型:映射

必需:否

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

Tracing

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

类型:TracingConfiguration

必需:否

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

Type

状态机的类型。

有效值STANDARDEXPRESS

类型:字符串

必需:否

默认值STANDARD

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

返回值

Ref

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

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

Fn:: GetAtt

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

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

Name

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

示例

状态机定义文件

以下是允许 lambda 函数调用状态机的内联状态机定义的示例。请注意,此示例要求该Role属性配置适当的策略以允许调用。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 中声明内联状态机定义,请使用 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