本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 Serverless Application Model (AWS SAM) 範本中宣告此實體,請使用下列語法。
YAML
Type: AWS::Serverless::StateMachine Properties: AutoPublishAlias:
String
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 默認情況下
UpdateReplacePolicy
將版本DeletionPolicy
和Retain
設置為。以前的版本將不會自動刪除。類型:字串
必要:否
AWS CloudFormation 兼容性:此屬性直接傳遞給
AWS::StepFunctions::StateMachineAlias
資源的Name
屬性。 -
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 簡單儲存服務 (Amazon S3) URI 或以亞馬遜州語言撰寫的狀態機器定義的本機檔案路徑。
如果您提供本機檔案路徑,則範本必須經過包含
sam deploy
或sam package
指令的工作流程,才能正確轉換定義。若要這麼做,您必須使用 AWS SAM CLI 的 0.52.0 版或更新版本。您必須提供
Definition
或DefinitionUri
.類型:字串 | 第 3 位置
必要:有條件
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) 執行角色。
此屬性接受單一值或值清單。允許數值包括:
注意
如果您設定
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
屬性。 -
string-to-string 指定新增至狀態機器的標籤以及對應執行角色的對應。有關標籤的有效鍵和值的詳細資訊,請參閱AWS::StepFunctions::StateMachine資源的 Tags 屬性。
類型:地圖
必要:否
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 會傳回基礎資源的 Amazon 資源名稱 (ARN)。AWS::StepFunctions::StateMachine
若要取得有關使用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 州語言撰寫。
在此範例中,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