本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS::Serverless::StateMachine
建立 AWS Step Functions 狀態機器,您可以使用它來協調 AWS Lambda 函數和其他 AWS 資源,以形成複雜且強大的工作流程。
如需 Step Functions 的詳細資訊,請參閱《AWS Step Functions 開發人員指南》。
注意
當您部署到 時 AWS CloudFormation, 會將您的 AWS SAM 資源 AWS SAM 轉換為 AWS CloudFormation 資源。如需詳細資訊,請參閱產生的 AWS CloudFormation 資源 AWS SAM。
語法
若要在 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
Retain根據預設, 會將版本的DeletionPolicy和UpdateReplacePolicy設為 。舊版不會自動刪除。類型:字串
必要:否
AWS CloudFormation 相容性:此屬性會直接傳遞至
AWS::StepFunctions::StateMachineAlias資源的Name屬性。 -
UseAliasAsEventTarget -
指出是否要將使用
AutoPublishAlias屬性建立的別名傳遞至事件所定義的事件來源目標#sam-statemachine-events。指定
True使用別名做為事件的目標。類型:布林值
必要:否
預設:
FalseAWS CloudFormation 相容性:此屬性對 是唯一的 AWS SAM ,並且沒有 AWS CloudFormation 同等的。
-
Definition -
狀態機器定義是物件,其中物件的格式符合 AWS SAM 範本檔案格式,例如 JSON 或 YAML。狀態機器定義遵循 Amazon 狀態語言。
如需內嵌狀態機器定義的範例,請參閱 範例。
您必須提供
Definition或DefinitionUri。類型:映射
必要:有條件
AWS CloudFormation 相容性:此屬性對 是唯一的 AWS SAM ,並且沒有 AWS CloudFormation 同等的。
-
DefinitionSubstitutions -
string-to-string映射,指定狀態機器定義中預留位置變數的映射。這可讓您將執行時間取得的值 (例如,從內部函數) 注入狀態機器定義。
類型:映射
必要:否
AWS CloudFormation 相容性:此屬性類似於
AWS::StepFunctions::StateMachine資源的DefinitionSubstitutions屬性。如果在內嵌狀態機器定義中指定任何內部函數, 會將項目 AWS SAM 新增至此屬性,以將它們插入狀態機器定義。 -
DefinitionUri -
Amazon Simple Storage Service (Amazon S3) URI 或以 Amazon States 語言撰寫之狀態機器定義的本機檔案路徑。
如果您提供本機檔案路徑,範本必須經過包含
sam deploy或sam package命令的工作流程,才能正確轉換定義。若要這樣做,您必須使用 CLI 的 AWS SAM 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子屬性值。類型:De DeploymentPreference
必要:否
AWS CloudFormation compatibility: AWS SAM 產生
StateMachineVersionArn屬性值並將其連接至AWS::StepFunctions::StateMachineAlias資源的DeploymentPreference屬性DeploymentPreference,並將其傳遞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) 執行角色。
此屬性接受單一值或值清單。允許數值包括:
注意
如果您設定
Role屬性,則會忽略此屬性。類型:字串 | 清單 | 映射
必要:否
AWS CloudFormation 相容性:此屬性對 是唯一的 AWS SAM ,並且沒有 AWS CloudFormation 同等的。
-
指出是否將標籤從
Tags屬性傳遞至您AWS::Serverless::StateMachine產生的資源。指定True以將標籤傳播到產生的資源中。類型:布林值
必要:否
預設:
FalseAWS CloudFormation 相容性:此屬性對 是唯一的 AWS SAM ,並且沒有 AWS CloudFormation 同等的。
-
Role -
做為此狀態機器執行角色的 IAM 角色 ARN。
類型:字串
必要:有條件
AWS CloudFormation 相容性:此屬性會直接傳遞至
AWS::StepFunctions::StateMachine資源的RoleArn屬性。 -
RolePath -
狀態機器 IAM 執行角色的路徑。
為您產生角色時,請使用此屬性。使用
Role屬性指定角色時,請勿使用 。類型:字串
必要:有條件
AWS CloudFormation 相容性:此屬性會直接傳遞至
AWS::IAM::Role資源的Path屬性。 -
string-to-string映射,指定新增至狀態機器的標籤和對應的執行角色。如需標籤有效金鑰和值的相關資訊,請參閱 AWS::StepFunctions::StateMachine 資源的標籤屬性。
類型:映射
必要:否
AWS CloudFormation 相容性:此屬性類似於
AWS::StepFunctions::StateMachineresource. AWS SAM automatic 的Tags屬性。 會自動將stateMachine:createdBy:SAM標籤新增至此資源,以及為其產生的預設角色。 -
Tracing -
選取是否 AWS X-Ray 已啟用狀態機器。如需搭配 Step Functions 使用 X-Ray 的詳細資訊,請參閱《 AWS Step Functions 開發人員指南》中的 AWS X-Ray 和 Step Functions。
必要:否
AWS CloudFormation 相容性:此屬性會直接傳遞至
AWS::StepFunctions::StateMachine資源的TracingConfiguration屬性。 -
Type -
狀態機器的類型。
有效值:
STANDARD或EXPRESS類型:字串
必要:否
預設:
STANDARDAWS CloudFormation 相容性:此屬性會直接傳遞至
AWS::StepFunctions::StateMachine資源的StateMachineType屬性。
傳回值
Ref
當您將此資源的邏輯 ID 提供給 Ref 內部函數時,Ref 會傳回基礎AWS::StepFunctions::StateMachine資源的 Amazon Resource Name (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 語言撰寫。
在此範例中,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