本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Step Functions 數執行 Amazon ECS 或 Fargate 任務
了解如何將 Step Functions 與 Amazon ECS 或 Fargate 整合,以執行和管理任務。在 AmazonECS,任務是計算的基本單位。工作由指定 Docker 容器的執行方式 (包括容器映像檔、記憶體限制、網路組態CPU及其他參數) 的工作定義所定義。本頁列出可用的 Amazon ECS API 動作,並提供如何使用 Step Functions 數將資料傳遞至 Amazon ECS 任務的指示。
若要瞭解如何整合 AWS 服務在 Step Functions 中,請參閱整合 服務和。將參數傳遞給 Step Functions 數API中的服務
ECS優化亞馬遜/法蓋特集成的主要功能
-
支援執行任務 (.sync)整合模式。
ecs:runTask
可以返回一個 HTTP 200 響應,但有一個非空Failures
字段,如下所示:要求回應:傳回回應,不會讓工作失敗。這與沒有優化相同。
執行 Job 或工作 Token:如果遇到非空白
Failures
欄位,工作會失敗並顯示錯AmazonECS.Unknown
誤。
支持亞ECS馬遜/Fargate 電台 APIs
-
RunTask
會使用指定的任務定義來啟動新的任務。
中的參數 Step Functions 表示於 PascalCase
即使原生服務位API於中 camelCase (例如API動作)startSyncExecution
,您也可以在中指定參數 PascalCase,例如:StateMachineArn
。
將數據傳遞給 Amazon ECS 任務
若要瞭解如何整合 AWS 服務在 Step Functions 中,請參閱整合 服務和。將參數傳遞給 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
}
}
}
IAM致電 Amazon 政策ECS/AWS Fargate
下面的示例模板顯示如何 AWS Step Functions 根據狀態機器定義中的資源產生IAM策略。如需詳細資訊,請參閱 Step Functions 式如何為整合式服務產生IAM原則 和 探索 Step Functions 中的服務整合模式。
由於TaskId
的值在提交工作之後才會知道,因此 Step Functions 會建立更具權限的"Resource": "*"
原則。
注意
您只能停止由 Step Functions 啟動的 Amazon 彈性容器服務 (AmazonECS) 任務,不論"*"
IAM政策如何。
如果排定的 Amazon ECS 任務需要使用任務執行角色、任務角色或任務角色覆寫,則您必須將每個任務執行角色、任務角色或任務角色覆寫的iam:PassRole
許可新增至呼叫實體的 E CloudWatch vents IAM 角色,在此情況下為 Step Functions。