AWS::Serverless::StateMachine - AWS Serverless Application Model

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

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將版本DeletionPolicyRetain設置為。以前的版本將不會自動刪除。

類型:字串

必要:否

AWS CloudFormation 兼容性:此屬性直接傳遞給AWS::StepFunctions::StateMachineAlias資源的 Name屬性。

Definition

狀態機器定義是一個對象,其中對象的格式與 AWS SAM 模板文件的格式匹配,例如 JSON 或 YAML。狀態機器定義遵循 Amazon 狀態語言

如需內嵌狀態機定義的範例,請參閱範例

您必須提供DefinitionDefinitionUri.

類型:地圖

必要:有條件

AWS CloudFormation 兼容性:此屬性是唯一的, AWS SAM 並且沒有相 AWS CloudFormation 等的屬性。

DefinitionSubstitutions

string-to-string 指定狀態機定義中預留位置變數對應的對映。這可讓您將在執行階段取得的值 (例如,從內建函式) 插入狀態機器定義中。

類型:地圖

必要:否

AWS CloudFormation 兼容性:此屬性類似於AWS::StepFunctions::StateMachine資源的DefinitionSubstitutions屬性。如果在內嵌狀態機器定義中指定了任何內建函數,則會將項目 AWS SAM 新增至此屬性,以將它們插入到狀態機器定義中。

DefinitionUri

Amazon 簡單儲存服務 (Amazon S3) URI 或以亞馬遜州語言撰寫的狀態機器定義的本機檔案路徑。

如果您提供本機檔案路徑,則範本必須經過包含sam deploysam package指令的工作流程,才能正確轉換定義。若要這麼做,您必須使用 AWS SAM CLI 的 0.52.0 版或更新版本。

您必須提供DefinitionDefinitionUri.

類型:字串 | 3 位置

必要:有條件

AWS CloudFormation 兼容性:此屬性直接傳遞給AWS::StepFunctions::StateMachine資源的DefinitionS3Location屬性。

DeploymentPreference

啟用和設定漸進狀態機器部署的設定。若要深入了解 Step Functions 逐步部署,請參閱AWS Step Functions 開發人員指南的使用版本和別名管理持續部署

AutoPublishAlias在配置此屬性之前指定。您的DeploymentPreference設定將套用至使用指定的別名AutoPublishAlias

當您指定時DeploymentPreference, AWS SAM 會自動產生StateMachineVersionArn子性質值。

類型:DeploymentPreference

必要:否

AWS CloudFormation 兼容性: AWS SAM 生成StateMachineVersionArn屬性值並將其附加到資源的屬性,DeploymentPreference並將其傳遞DeploymentPreferenceAWS::StepFunctions::StateMachineAlias資源的DeploymentPreference屬性。

Events

指定觸發此狀態機器的事件。事件包含一個類型和一組依賴於類型的屬性。

類型:EventSource

必要:否

AWS CloudFormation 兼容性:此屬性是唯一的, AWS SAM 並且沒有相 AWS CloudFormation 等的屬性。

Logging

定義要記錄哪些執行歷程記錄事件以及記錄位置。

類型:LoggingConfiguration

必要:否

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 等的屬性。

PropagateTags

指出是否要將標籤從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屬性。

Tags

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

類型:TracingConfiguration

必要:否

AWS CloudFormation 兼容性:此屬性直接傳遞給AWS::StepFunctions::StateMachine資源的TracingConfiguration屬性。

Type

狀態機的類型。

有效值STANDARDEXPRESS

類型:字串

必要:否

預設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