AWS-ECS Task를 사용한 배치 처리
9283 단어 AWSECSStep Functionstech
구성의 패러다임은 여러 가지지만 일단 필요한 AWS 리소스를 정리하고 감시 재시도를 실현하는 방법부터 생각해보고 싶다.
(람바다를 사용하면 재시도 설정이 있어 간단하지만, 처리 시간이 너무 길어 람바다를 사용할 수 없을 것 같다)
지정된 시간에 ECS Task 시작
EventBridge
Target
에서 ECS task
또는 Step Functions state machine
를 지정하면 됩니다.Target
의 호출 자체가 실패했을 때의 재시도는 Rule를 설정할 수 있지만 시작한 후의 실패는 Step Functions
에서 대응해야 한다.따라서 처음부터 지정된 형식
Step Functions state machine
으로 시작하는 것이 좋다.ECS Task 가 실패하면 다시 시도하려고 합니다.
ECS Task 시작 재시도는 Step Function을 사용하여 수행할 수 있습니다.
매우 간단하여
ECS RunTask
의 동작을 삽입하고 다시 시도하는 설정만 하면 된다.시간 초과 설정도 있다.
ECS RunTask
Error handling
Definition
{
"Comment": "A description of my state machine",
"StartAt": "ECS RunTask",
"States": {
"ECS RunTask": {
"Type": "Task",
"Resource": "arn:aws:states:::ecs:runTask.sync",
"Parameters": {
"LaunchType": "FARGATE",
"PlatformVersion": "LATEST",
"Cluster": "arn:aws:ecs:ap-northeast-1:xxxxx:cluster/xxxxx",
"TaskDefinition": "arn:aws:ecs:ap-northeast-1:xxxxx:task-definition/xxxxx",
"PropagateTags": "TASK_DEFINITION",
"NetworkConfiguration": {
"AwsvpcConfiguration": {
"Subnets": [
"subnet-xxxxx",
"subnet-yyyyy",
"subnet-zzzzz"
],
"AssignPublicIp": "ENABLED",
"SecurityGroups": [
"sg-xxxxx"
]
}
}
},
"End": true,
"Retry": [
{
"ErrorEquals": [
"States.ALL"
],
"BackoffRate": 1,
"IntervalSeconds": 10,
"MaxAttempts": 1
}
]
}
}
}
여기에는 자동으로 생성되는 롤의 폴리시가 허가iam:PassRole
설정이 없기 때문에 사용하는 Task Definition에 따라 실패할 수 있습니다.이에 따라 다음과 같은 폴리시가 추가됐다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": "*",
"Condition": {
"StringLike": {
"iam:PassedToService": "ecs-tasks.amazonaws.com"
}
}
}
]
}
는 부차적이지만 단계 펀션에서 State machine을 미리 제작하면 콘솔 화면에서 1회Start execution
를 클릭할 수 있다.직접
RunTask
ECS Task를 원하는 경우 매번 네트워크 주변 등을 설정해야 하지만 그럴 시간이 없을 수 있다.(오류도 감소)ECS Task 가 실패할 경우 알려 드리려고 합니다.
이것은 여러 가지 패턴이 있을 수 있다.
ECS Task State Change
및 알림Step Functions Execution Status Change
및 알림ECS RunTask
의Catch
에서 통지1
의 경우 재시도와 상관없이 RunTask
의 처리에 실패한 경우 통지할 수 있다.2
의 경우 State machine
의 내용과 무관Execution
의 처리 실패 시 통지할 수 있다.3
의 경우 재시도 결과RunTask
의 실행 실패를 통지할 수 있습니다.어느 것이 좋고 나쁨인지, 차라리 무엇을 우선시하고 싶은지, 선택하는 방식이 바뀐 것 같다.
모든 모드를 동시에 적용할 수 있기 때문에 모두 적용하면 모두 알릴 수 있습니다.
총결산
ECS Task는 기본적으로 Stop Function을 통해 활용되는 형태로 만들면 다양한 편리함을 느낄 수 있습니다.
스텝펀션은 문턱이 높다고 느끼지만 개요를 이해하면 별 어려움이 없을 것이다.
그래서 스텝펀션을 적극적으로 활용하고 싶다.
Reference
이 문제에 관하여(AWS-ECS Task를 사용한 배치 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/umatoma/articles/55dcac5649392c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)