AWS::Serverless::StateMachine - AWS Serverless Application Model

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

AWS::Serverless::StateMachine

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

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

注意

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

语法

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

YAML

Type: AWS::Serverless::StateMachine Properties: AutoPublishAlias: String UseAliasAsEventTarget: Boolean 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 状态机别名,请参阅《AWS Step Functions 开发人员指南》中的使用版本与别名功能管理持续部署

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

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

类型:字符串

必需:否

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

UseAliasAsEventTarget

指示是否将使用 AutoPublishAlias 属性创建的别名传递给使用事件定义的事件源目标。

指定 True 使用别名作为事件的目标。

类型:布尔值

必需:否

默认值False

AWS CloudFormation 兼容性:此属性为 AWS SAM 独有,没有 AWS CloudFormation 等效属性。

Definition

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

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

您必须提供 DefinitionDefinitionUri

类型:映射

必需:条件

AWS CloudFormation 兼容性:此属性为 AWS SAM 独有,没有 AWS CloudFormation 等效属性。

DefinitionSubstitutions

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

类型:映射

必需:否

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

DefinitionUri

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

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

您必须提供 DefinitionDefinitionUri

类型:字符串 | S3Location

必需:条件

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

DeploymentPreference

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

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

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

类型DeploymentPreference

必需:否

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

Events

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

类型EventSource

必需:否

AWS CloudFormation 兼容性:此属性为 AWS SAM 独有,没有 AWS CloudFormation 等效属性。

Logging

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

类型LoggingConfiguration

必需:否

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

Name

状态机的名称。

类型:字符串

必需:否

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

PermissionsBoundary

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

类型:字符串

必需:否

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

Policies

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

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

注意

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

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

必需:否

AWS CloudFormation 兼容性:此属性为 AWS SAM 独有,没有 AWS CloudFormation 等效属性。

PropagateTags

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

类型:布尔值

必需:否

默认值False

AWS CloudFormation 兼容性:此属性为 AWS SAM 独有,没有 AWS CloudFormation 等效属性。

Role

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

类型:字符串

必需:条件

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

RolePath

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

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

类型:字符串

必需:条件

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

Tags

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

类型:映射

必需:否

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

Tracing

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

类型TracingConfiguration

必需:否

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

Type

状态机的类型。

有效值STANDARDEXPRESS

类型:字符串

必需:否

默认值STANDARD

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

返回值

Ref

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

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

Fn::GetAtt

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

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

Name

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

示例

状态机定义文件

以下是内联状态机定义的示例,该定义允许 Lambda 函数调用状态机。请注意,此示例要求 Role 属性配置适当的策略以允许调用。my_state_machine.asl.json 文件必须以 Amazon States Language 编写。

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