本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS::Serverless::StateMachine
创建 AWS Step Functions 状态机,您可以使用它来编排 AWS Lambda 函数和其他 AWS 资源,以形成复杂而强大的工作流程。
有关 Step Functions 的更多信息,请参阅《AWS Step Functions 开发人员指南》。
注意
部署到 AWS CloudFormation 时,AWS SAM 会将您的 AWS SAM 资源转换为 CloudFormation 资源。有关更多信息,请参阅 为 AWS SAM 生成的 CloudFormation 资源。
语法
要在您的 AWS Serverless Application Model (AWS SAM) 模板中声明此实体,请使用以下语法。
YAML
Type: AWS::Serverless::StateMachine Properties: AutoPublishAlias:StringUseAliasAsEventTarget:BooleanDefinition:MapDefinitionSubstitutions:MapDefinitionUri:String | S3LocationDeploymentPreference:DeploymentPreferenceEvents:EventSourceLogging:LoggingConfigurationName:StringPermissionsBoundary:StringPolicies:String | List | MapPropagateTags:BooleanRolePath:StringRole:StringTags:MapTracing:TracingConfigurationType:String
属性
-
AutoPublishAlias -
状态机别名的名称。要详细了解如何使用 Step Functions 状态机别名,请参阅《AWS Step Functions 开发人员指南》中的使用版本与别名功能管理持续部署。
使用
DeploymentPreference为别名配置部署首选项。如果您未指定DeploymentPreference,则 AWS SAM 会将流量配置为一次性转移到较新的状态机版本。默认情况下,AWS SAM 将版本的
DeletionPolicy和UpdateReplacePolicy设置为Retain。以前的版本不会被自动删除。类型:字符串
必需:否
CloudFormation 兼容性:此属性直接传递给
AWS::StepFunctions::StateMachineAlias资源的Name属性。 -
UseAliasAsEventTarget -
指示是否将使用
AutoPublishAlias属性创建的别名传递给使用事件定义的事件源目标。指定
True使用别名作为事件的目标。类型:布尔值
必需:否
默认值:
FalseCloudFormation 兼容性:此属性为 AWS SAM 独有,没有 CloudFormation 等效属性。
-
Definition -
状态机定义是一个对象,其中的对象格式与 AWS SAM 模板文件的格式相匹配,例如 JSON 或 YAML。状态机定义遵循 Amazon States Language。
有关内联状态机定义的示例,请参见 示例。
您必须提供
Definition或DefinitionUri。类型:映射
必需:条件
CloudFormation 兼容性:此属性为 AWS SAM 独有,没有 CloudFormation 等效属性。
-
DefinitionSubstitutions -
一个字符串到字符串映射,指定状态机定义中占位符变量的映射。这使您能够将运行时获得的值(例如,从内置函数)注入到状态机定义中。
类型:映射
必需:否
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
必需:条件
CloudFormation 兼容性:此属性直接传递给
AWS::StepFunctions::StateMachine资源的DefinitionS3Location属性。 -
DeploymentPreference -
启用和配置逐步状态机部署的设置。要详细了解 Step Functions 逐步部署,请参阅《AWS Step Functions 开发人员指南》中的使用版本与别名功能管理持续部署。
在配置此属性之前指定
AutoPublishAlias。您的DeploymentPreference设置将应用于通过AutoPublishAlias指定的别名。指定
DeploymentPreference后,AWS SAM 会自动生成StateMachineVersionArn子属性值。必需:否
CloudFormation 兼容性:AWS SAM 生成
StateMachineVersionArn属性值并将其附加到DeploymentPreference,然后将DeploymentPreference传递给AWS::StepFunctions::StateMachineAlias资源的DeploymentPreference属性。 -
Events -
指定触发此状态机的事件。事件由一个类型和一组依赖于该类型的属性组成。
类型:EventSource
必需:否
CloudFormation 兼容性:此属性为 AWS SAM 独有,没有 CloudFormation 等效属性。
-
Logging -
定义记录哪些执行历史事件以及它们的记录位置。
必需:否
CloudFormation 兼容性:此属性直接传递给
AWS::StepFunctions::StateMachine资源的LoggingConfiguration属性。 -
Name -
状态机的名称。
类型:字符串
必需:否
CloudFormation 兼容性:此属性直接传递给
AWS::StepFunctions::StateMachine资源的StateMachineName属性。 -
PermissionsBoundary -
此状态机执行角色使用的权限边界的 ARN。此属性仅在为您生成角色时有效。
类型:字符串
必需:否
CloudFormation 兼容性:此属性直接传递给
AWS::IAM::Role资源的PermissionsBoundary属性。 -
Policies -
此状态机的权限策略。策略将附加到状态机的默认 AWS Identity and Access Management (IAM) 执行角色。
此属性接受单个值或值列表。允许的值包括:
-
以下列表
中 AWS 托管策略的名称。 -
在 YAML 中格式化为映射的内联 IAM policy。
注意
如果指定
Role属性,则将忽略该属性。类型:字符串 | 列表 | 映射
必需:否
CloudFormation 兼容性:此属性为 AWS SAM 独有,没有 CloudFormation 等效属性。
-
指明是否将
Tags属性中的标签传递给 AWS::Serverless::StateMachine 生成的资源。指定True以在生成的资源中传播标签。类型:布尔值
必需:否
默认值:
FalseCloudFormation 兼容性:此属性为 AWS SAM 独有,没有 CloudFormation 等效属性。
-
Role -
用作此状态机执行角色的 IAM 角色的 ARN。
类型:字符串
必需:条件
CloudFormation 兼容性:此属性直接传递给
AWS::StepFunctions::StateMachine资源的RoleArn属性。 -
RolePath -
状态机的 IAM 执行角色的路径。
生成角色时请使用此属性。当使用
Role属性指定角色时,请勿使用。类型:字符串
必需:条件
CloudFormation 兼容性:此属性直接传递给
AWS::IAM::Role资源的Path属性。 -
指定添加到状态机的标签和相应执行角色的映射(字符串到字符串)。有关标签的有效键和值的信息,请参阅 AWS::StepFunctions::StateMachine 资源的标签属性。
类型:映射
必需:否
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。
必需:否
CloudFormation 兼容性:此属性直接传递给
AWS::StepFunctions::StateMachine资源的TracingConfiguration属性。 -
Type -
状态机的类型。
有效值:
STANDARD或EXPRESS类型:字符串
必需:否
默认值:
STANDARDCloudFormation 兼容性:此属性直接传递给
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