本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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 将版本的
DeletionPolicy
和UpdateReplacePolicy
设置为Retain
。以前的版本不会被自动删除。类型:字符串
必需:否
AWS CloudFormation 兼容性:此属性直接传递给
AWS::StepFunctions::StateMachineAlias
资源的Name
属性。 -
UseAliasAsEventTarget
-
指示是否将使用
AutoPublishAlias
属性创建的别名传递给使用事件定义的事件源目标。指定
True
使用别名作为事件的目标。类型:布尔值
必需:否
默认值:
False
AWS CloudFormation 兼容性:此属性为 AWS SAM 独有,没有 AWS CloudFormation 等效属性。
-
Definition
-
状态机定义是一个对象,其中的对象格式与 AWS SAM 模板文件的格式相匹配,例如 JSON 或 YAML。状态机定义遵循 Amazon 状态语言。
有关内联状态机定义的示例,请参见 示例。
您必须提供
Definition
或DefinitionUri
。类型:映射
必需:条件
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 deploy
或sam package
命令的工作流程才能使定义正确转换。为此,必须使用 AWS SAM CLI 版本 0.52.0 或更高版本。您必须提供
Definition
或DefinitionUri
。类型:字符串 | S3Location
必需:条件
AWS CloudFormation 兼容性:此属性直接传递给
AWS::StepFunctions::StateMachine
资源的DefinitionS3Location
属性。 -
DeploymentPreference
-
启用和配置逐步状态机部署的设置。要详细了解 Step Functions 逐步部署,请参阅《AWS Step Functions 开发人员指南》中的使用版本与别名功能管理持续部署。
在配置此属性之前指定
AutoPublishAlias
。您的DeploymentPreference
设置将应用于通过AutoPublishAlias
指定的别名。指定
DeploymentPreference
后,AWS SAM 会自动生成StateMachineVersionArn
子属性值。必需:否
AWS CloudFormation 兼容性:AWS SAM 生成
StateMachineVersionArn
属性值并将其附加到DeploymentPreference
,然后将DeploymentPreference
传递给AWS::StepFunctions::StateMachineAlias
资源的DeploymentPreference
属性。 -
Events
-
指定触发此状态机的事件。事件由一个类型和一组依赖于该类型的属性组成。
类型:EventSource
必需:否
AWS CloudFormation 兼容性:此属性为 AWS SAM 独有,没有 AWS CloudFormation 等效属性。
-
Logging
-
定义记录哪些执行历史事件以及它们的记录位置。
必需:否
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) 执行角色。
此属性接受单个值或值列表。允许的值包括:
-
以下列表
中 AWS 托管策略的名称。 -
在 YAML 中格式化为映射的内联 IAM policy。
注意
如果指定
Role
属性,则将忽略该属性。类型:字符串 | 列表 | 映射
必需:否
AWS CloudFormation 兼容性:此属性为 AWS SAM 独有,没有 AWS CloudFormation 等效属性。
-
指明是否将
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
属性。 -
指定添加到状态机的标签和相应执行角色的映射(字符串到字符串)。有关标签的有效键和值的信息,请参阅 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。
必需:否
AWS CloudFormation 兼容性:此属性直接传递给
AWS::StepFunctions::StateMachine
资源的TracingConfiguration
属性。 -
Type
-
状态机的类型。
有效值:
STANDARD
或EXPRESS
类型:字符串
必需:否
默认值:
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