選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

使用 Step Functions 執行 Amazon ECS 或 Fargate 任務

焦點模式
使用 Step Functions 執行 Amazon ECS 或 Fargate 任務 - AWS Step Functions

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

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

了解如何將 Step Functions 與 Amazon ECS 或 Fargate 整合,以執行和管理任務。在 Amazon ECS 中,任務是運算的基本單位。任務由任務定義定義,指定 Docker 容器應如何執行,包括容器映像、CPU 和記憶體限制、網路組態和其他參數。此頁面列出可用的 Amazon ECS API 動作,並提供如何使用 Step Functions 將資料傳遞至 Amazon ECS 任務的指示。

若要了解如何在 Step Functions 中整合 AWS 服務,請參閱 整合 服務在 Step Functions 中將參數傳遞至服務 API

Optimized Amazon ECS/Fargate 整合的主要功能
  • 支援執行任務 (.sync)整合模式。

  • ecs:runTask 可以傳回 HTTP 200 回應,但具有非空白Failures欄位,如下所示:

    • 請求回應:傳回回應,且不會讓任務失敗。這與沒有最佳化相同。

    • 執行任務或任務權杖:如果遇到非空白Failures欄位,任務會失敗並出現AmazonECS.Unknown錯誤。

最佳化 Amazon ECS/Fargate APIs

中的參數Step Functions以 PascalCase 表示

即使原生服務 API 位於 camelCase 中,例如 API 動作 startSyncExecution,您可以在 PascalCase 中指定參數,例如:StateMachineArn

將資料傳遞至 Amazon ECS 任務

若要了解如何在 Step Functions 中整合 AWS 服務,請參閱 整合 服務在 Step Functions 中將參數傳遞至服務 API

您可以使用 overrides 覆寫容器的預設命令,並將輸入傳遞至 Amazon ECS 任務。請參閱 ContainerOverride。在此範例中,我們已使用 JsonPath 將輸入中的 Task 值傳遞到 Task 狀態。

下列包含執行 Amazon ECS 任務並等待其完成Task的狀態。

{ "StartAt": "Run an ECS Task and wait for it to complete", "States": { "Run an ECS Task and wait for it to complete": { "Type": "Task", "Resource": "arn:aws:states:::ecs:runTask.sync", "Parameters": { "Cluster": "cluster-arn", "TaskDefinition": "job-id", "Overrides": { "ContainerOverrides": [ { "Name": "container-name", "Command.$": "$.commands" } ] } }, "End": true } } }

ContainerOverrides 中的 "Command.$": "$.commands" 行將命令從狀態輸入傳遞至容器。

針對先前的範例,如果執行的輸入如下所示,則每個命令將做為容器覆寫來傳遞:

{ "commands": [ "test command 1", "test command 2", "test command 3" ] }

下列包含執行 Amazon ECS 任務,然後等待任務權杖傳回Task的狀態。請參閱 使用任務權杖等待回呼

{ "StartAt":"Manage ECS task", "States":{ "Manage ECS task":{ "Type":"Task", "Resource":"arn:aws:states:::ecs:runTask.waitForTaskToken", "Parameters":{ "LaunchType":"FARGATE", "Cluster":"cluster-arn", "TaskDefinition":"job-id", "Overrides":{ "ContainerOverrides":[ { "Name":"container-name", "Environment":[ { "Name":"TASK_TOKEN_ENV_VARIABLE", "Value.$":"$$.Task.Token" } ] } ] } }, "End":true } } }

呼叫 Amazon ECS/ 的 IAM 政策AWS Fargate

下列範例範本顯示 如何根據您狀態機器定義中的資源 AWS Step Functions 產生 IAM 政策。如需詳細資訊,請參閱 Step Functions 如何為整合服務產生 IAM 政策探索 Step Functions 中的服務整合模式

由於在提交任務之前TaskId, 的值是未知的,因此 Step Functions 會建立更特權"Resource": "*"的政策。

注意

儘管有 IAM 政策,您仍然只能停止 Step Functions 啟動的 Amazon Elastic Container Service (Amazon ECS) "*" 任務。

Run a Job (.sync)

靜態資源

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:RunTask" ], "Resource": [ "arn:aws:ecs:[[region]]: [[accountId]]:task-definition/[[taskDefinition]]:[[revisionNumber]]" ] }, { "Effect": "Allow", "Action": [ "ecs:StopTask", "ecs:DescribeTasks" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:[[region]]: [[accountId]]:rule/StepFunctionsGetEventsForECSTaskRule" ] } ] }

動態資源

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:RunTask", "ecs:StopTask", "ecs:DescribeTasks" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:[[region]]: [[accountId]]:rule/StepFunctionsGetEventsForECSTaskRule" ] } ] }
Request Response and Callback (.waitForTaskToken)

靜態資源

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:RunTask" ], "Resource": [ "arn:aws:ecs:[[region]]: [[accountId]]:task-definition/[[taskDefinition]]:[[revisionNumber]]" ] } ] }

動態資源

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:RunTask" ], "Resource": "*" } ] }

靜態資源

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:RunTask" ], "Resource": [ "arn:aws:ecs:[[region]]: [[accountId]]:task-definition/[[taskDefinition]]:[[revisionNumber]]" ] }, { "Effect": "Allow", "Action": [ "ecs:StopTask", "ecs:DescribeTasks" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:[[region]]: [[accountId]]:rule/StepFunctionsGetEventsForECSTaskRule" ] } ] }

動態資源

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:RunTask", "ecs:StopTask", "ecs:DescribeTasks" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:[[region]]: [[accountId]]:rule/StepFunctionsGetEventsForECSTaskRule" ] } ] }

如果您的排程 Amazon ECS 任務需要使用任務執行角色、任務角色或任務角色覆寫,則您必須將每個任務執行角色、任務角色或任務角色覆寫的iam:PassRole許可新增至呼叫實體的 CloudWatch Events IAM 角色,此角色在此案例中為 Step Functions。

下一個主題:

Amazon EKS

上一個主題:

Amazon DynamoDB
隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。