本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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
-
定义记录哪些执行历史事件以及它们的记录位置。
必需:否
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开发人员指南.
必需:否
Amazon CloudFormation兼容性:此属性将直接传递给
TracingConfiguration
的财产AWS::StepFunctions::StateMachine
资源。 -
Type
-
状态机的类型。
有效值:
STANDARD
或EXPRESS
类型:字符串
必需:否
默认值:
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用户指南.
示例
状态机定义文件
以下是使用定义文件定义的状态机的示例。这些区域有: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