本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS::Serverless::StateMachine
创建 AWS Step Functions 状态机,可用于协调 AWS Lambda 函数和其他 AWS 资源,以形成复杂而强大的工作流程。
有关 Step Functions 的更多信息,请参阅 AWS Step Functions 开发人员指南。
注意:要管理包含 AWS SAM 状态机的 Step Functions 模板,您必须使用 AWS SAM CLI 的版本 0.52.0 或更高版本。要检查您拥有的版本,请运行命令
sam --version
。
语法
在您的 中声明此实体 AWS 无服务器应用程序模型 (AWS 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
-
状态机定义是一个对象,其中对象的格式与 AWS SAM 模板文件的格式匹配,例如,JSON 或 YAML。状态机定义遵循 Amazon 状态语言。
有关内联状态机定义的示例,请参阅示例。
您必须提供
Definition
或DefinitionUri
。类型:Map
必需: 条件
兼容性AWS CloudFormation:此属性对于 AWS SAM 是唯一的,没有等效的 AWS CloudFormation。
-
DefinitionSubstitutions
-
一个字符串到字符串映射,用于指定状态机定义中占位符变量的映射。这使您能够将在运行时获取的值(例如,来自内部函数的值)注入到状态机定义中。
类型:Map
必需: 否
兼容性AWS CloudFormation:此属性类似于
DefinitionSubstitutions
资源的AWS::StepFunctions::StateMachine
属性。如果在内联状态机定义中指定了任何内部函数,则 AWS SAM 会将条目添加到此属性中以将它们注入到状态机定义中。 -
DefinitionUri
-
用 Amazon Simple Storage ServiceAmazon 状态语言Amazon S3编写的状态机定义的 () URI 或本地文件路径。
如果您提供了本地文件路径,则模板必须执行包含
sam deploy
或sam package
命令的工作流程才能正确转换定义。为此,您必须使用 AWS SAM CLI 版本 0.52.0 或更高版本。您必须提供
Definition
或DefinitionUri
。类型: String | S3Location
必需: 条件
兼容性AWS CloudFormation:此属性直接传递给
DefinitionS3Location
资源的AWS::StepFunctions::StateMachine
属性。 -
Events
-
指定触发此状态机的事件。事件由依赖于类型的类型和一组属性组成。
类型: EventSource
必需: 否
兼容性AWS CloudFormation:此属性对于 AWS SAM 是唯一的,没有等效的 AWS CloudFormation。
-
Logging
-
定义记录哪些执行历史事件以及它们的记录位置。
必需: 否
兼容性AWS CloudFormation:此属性直接传递给
LoggingConfiguration
资源的AWS::StepFunctions::StateMachine
属性。 -
Name
-
状态机的名称。
类型:字符串
必需: 否
兼容性AWS CloudFormation:此属性直接传递给
StateMachineName
资源的AWS::StepFunctions::StateMachine
属性。 -
PermissionsBoundary
-
要用于此状态机的执行角色的权限边界的 ARN。此属性仅在为您生成角色时起作用。
类型:字符串
必需: 否
兼容性AWS CloudFormation:此属性直接传递给
PermissionsBoundary
资源的AWS::IAM::Role
属性。 -
Policies
-
此状态机的执行角色所需的一个或多个策略。
此属性接受单个字符串或字符串列表。属性可以是 AWS 托管 AWS Identity and Access Management (IAM) 策略、AWS SAM 策略模板的名称,也可以是格式化为映射的一个或多个内联策略文档。
您需要提供
Role
或Policies
。如果设置了
Role
属性,则将忽略此属性。类型:String | List | Map
必需: 条件
兼容性AWS CloudFormation:此属性对于 AWS SAM 是唯一的,没有等效的 AWS CloudFormation。
-
Role
-
要用作此状态机执行角色的 IAM 角色的 ARN。
您必须提供
Role
或Policies
。类型:字符串
必需: 条件
兼容性AWS CloudFormation:此属性直接传递给
RoleArn
资源的AWS::StepFunctions::StateMachine
属性。 -
Tags
-
一个字符串到字符串映射,指定添加到状态机和相应执行角色的标签。
类型:Map
必需: 否
兼容性AWS CloudFormation:此属性直接传递给
Tags
资源的AWS::StepFunctions::StateMachine
属性。 -
Tracing
-
选择是否为状态机启用 AWS X-Ray。有关将 X-Ray 与 Step Functions 结合使用的更多信息,请参阅 AWS X-Ray 中的 Step Functions 和 AWS Step Functions 开发人员指南。
必需: 否
兼容性AWS CloudFormation:此属性直接传递给
TracingConfiguration
资源的AWS::StepFunctions::StateMachine
属性。 -
Type
-
状态机的类型。
有效值:
STANDARD
或者EXPRESS
类型:字符串
必需: 否
默认值:
STANDARD
兼容性AWS CloudFormation:此属性直接传递给
StateMachineType
资源的AWS::StepFunctions::StateMachine
属性。
返回值
Ref
当向 Ref 内部函数提供此资源的逻辑 ID 时,Ref 将返回底层 AWS::StepFunctions::StateMachine
资源的 Amazon 资源名称 (ARN)。
有关使用 Ref
函数的更多信息,请参阅 中的 Ref
AWS CloudFormation 用户指南。
Fn::GetAtt
Fn::GetAtt
返回一个此类型指定属性的值。以下为可用属性和示例返回值。
有关使用 Fn::GetAtt
的更多信息,请参阅 Fn::GetAtt
AWS CloudFormation 用户指南 中的 。
示例
状态机定义文件
以下是使用定义文件定义的状态机的示例。文件必须用 my_state_machine.asl.json
Amazon 状态语言编写。
在此示例中,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