Step Functions를 사용하여 Amazon ECS 또는 Fargate 작업을 실행합니다. - AWS Step Functions

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Step Functions를 사용하여 Amazon ECS 또는 Fargate 작업을 실행합니다.

Step Functions를 Amazon ECS 또는 Fargate와 통합하여 작업을 실행하고 관리하는 방법을 알아보십시오. ECSAmazon에서 작업은 계산의 기본 단위입니다. 작업은 컨테이너 이미지, 메모리 제한, 네트워크 구성 CPU 및 기타 매개 변수를 포함하여 Docker 컨테이너의 실행 방법을 지정하는 작업 정의에 의해 정의됩니다. 이 페이지는 사용 가능한 Amazon ECS API 작업을 나열하고 Step Functions를 사용하여 Amazon ECS 작업에 데이터를 전달하는 방법에 대한 지침을 제공합니다.

통합에 대해 알아보려면 AWS Step Functions의 서비스에 대해서는 및 을 참조하십시오 서비스 통합. Step API Functions에서 서비스에 파라미터 전달하기

최적화된 ECS Amazon/Fargate 통합의 주요 기능
  • 작업 실행(.sync) 통합 패턴이 지원됩니다.

  • ecs:runTaskHTTP200개의 응답을 반환할 수 있지만 다음과 같이 비어 있지 않은 Failures 필드가 있어야 합니다.

    • 요청 응답: 응답을 반환하고 태스크를 실패하지 않습니다. 이는 최적화가 없는 것과 동일합니다.

    • 작업 실행 또는 태스크 토큰: 비어 있지 않은 Failures 필드가 발견되면 AmazonECS.Unknown 오류가 발생하여 태스크가 실패합니다.

ECS아마존/파게이트 지원 APIs

매개 변수 입력 Step Functions 다음과 같이 표현됩니다. PascalCase

예를 camelCase startSyncExecution 들어 API 액션에 네이티브 API 서비스가 포함되어 있더라도 다음과 같은 매개 변수를 지정합니다StateMachineArn. PascalCase

Amazon ECS 태스크에 데이터 전달

통합에 대해 알아보려면 AWS Step Functions의 서비스에 대해서는 및 을 참조하십시오 서비스 통합. Step API Functions에서 서비스에 파라미터 전달하기

overrides 사용하여 컨테이너의 기본 명령을 재정의하고 Amazon ECS 작업에 입력을 전달할 수 있습니다. ContainerOverride을 참조하세요. 이 예제에서는 Task 입력에서 Task 상태로 값을 전달하는 JsonPath 데 사용했습니다.

다음은 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아마존 전화 정책ECS/AWS Fargate

다음 예제 템플릿은 방법을 보여줍니다. AWS Step Functions 스테이트 머신 정의의 리소스를 기반으로 IAM 정책을 생성합니다. 자세한 내용은 Step Functions가 통합 서비스를 위한 IAM 정책을 생성하는 방법Step Functions에서 서비스 통합 패턴을 살펴보세요 단원을 참조하세요.

작업 제출 전까지 TaskId 값이 알려지지 않으므로 Step Functions는 권한이 더 많이 부여된 "Resource": "*" 정책을 만듭니다.

참고

"*"IAM정책에도 불구하고 Step Functions에서 시작한 Amazon Elastic 컨테이너 서비스 (AmazonECS) 작업만 중지할 수 있습니다.

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": "*" } ] }

예약된 Amazon ECS 작업에 작업 실행 역할, 작업 역할 또는 작업 역할 재정의를 사용해야 하는 경우 각 작업 실행 역할, 작업 역할 또는 작업 역할 재정의에 대한 iam:PassRole 권한을 호출 엔티티의 CloudWatch Events IAM 역할 (이 경우 Step Functions) 에 추가해야 합니다.