서론
AWS Batch를 쓰다보면 배치 작업이 완료나 실패처리가 된 후에 처리작업을 해야할 일이 생깁니다.
오늘은 Batch 작업이 완료되거나 실패된 후에 EventBridge를 이용하여 후 처리를 하는 방법을 알아보도록
하겠습니다.
지난 글에서 EKS에서 AWS Batch를 돌려보는 방법을 알아보았습니다.
못 보신분들은 아래 링크를 통해 보러가실 수 있습니다.
https://developer-jp.tistory.com/201
EventBridge를 이용한 상태 변경 처리
우선 Batch작업을 위한 컴퓨팅 환경, 배치 작업대기열, 작업 정의 등은 모두 설정하여 배치가 원활히 돌아가고 있다고 가정을 하고 진행하겠습니다.
AWS 콘솔에서 EventBridge를 찾아 클릭합시다.
EventBridge 콘솔에 들어오면 왼쪽에 이벤트 버스와 규칙을 찾으실 수 있을텐데요.
이벤트 버스를 새로 생성하시거나 상관없다 하시는 분은 생성하지 않고 default로 하셔도 됩니다.
중요한 부분은 규칙입니다.
규칙 생성을 누르시면 아래와 같이 나오는데요.
이름과 설명, 이벤트 버스 설정을하고 이벤트 패턴이 있는 규칙을 설정하고 다음을 누릅니다.
다른 건 설정할 필요없고 밑으로 쭉 내려 생성 방법에 사용자 지정 패턴을 클릭합니다.
이벤트 패턴에서 위와 같이 JSON을 입력합니다.
위 패턴은 배치의 상태 변경이 Failed나 Succeed로 이루어 질때 이벤트가 발생하는 규칙입니다.
상태 값은 Starting, Runnable, Running 등등 여러 상태가 있고 각자에 맞춰 하시면 될 것 같습니다.
저는 Failed와 Succeed만 하겠습니다.
다음을 눌러 넘어가면 발생한 이벤트를 어디로 보낼 것인지 설정합니다.
다른 이벤트 버스로 보낼 수도 있고, AWS 서비스의 Lambda나 SQS, SNS로 보낼 수 있습니다.
다음으로 넘어가면 간단하게 이벤트가 설정이 됩니다.
이제 AWS Batch 작업이 Failed나 Succeed로 상태가 변경이 되면 설정해 둔 대상으로 이벤트가 가게됩니다.
이벤트는 아래와 같은 정보를 담고 있습니다.
AWS 문서 홈페이지에서 예시 정보를 가져왔습니다.
배치 작업으로 들어온 Command, Parameters, 컴퓨팅 환경 등의 정보가 들어있습니다.
{
"version": "0",
"id": "c8f9c4b5-76e5-d76a-f980-7011e206042b",
"detail-type": "Batch Job State Change",
"source": "aws.batch",
"account": "123456789012",
"time": "2022-01-11T23:36:40Z",
"region": "us-east-1",
"resources": [
"arn:aws:batch:us-east-1:123456789012:job/4c7599ae-0a82-49aa-ba5a-4727fcce14a8"
],
"detail": {
"jobArn": "arn:aws:batch:us-east-1:123456789012:job/4c7599ae-0a82-49aa-ba5a-4727fcce14a8",
"jobName": "event-test",
"jobId": "4c7599ae-0a82-49aa-ba5a-4727fcce14a8",
"jobQueue": "arn:aws:batch:us-east-1:123456789012:job-queue/PexjEHappyPathCanary2JobQueue",
"status": "SUCCEED",
"attempts": [],
"createdAt": 1641944200058,
"retryStrategy": {
"attempts": 2,
"evaluateOnExit": []
},
"dependsOn": [],
"jobDefinition": "arn:aws:batch:us-east-1:123456789012:job-definition/first-run-job-definition:1",
"parameters": {},
"container": {
"image": "137112412989.dkr.ecr.us-east-1.amazonaws.com/amazonlinux:latest",
"command": [
"sleep",
"600"
],
"volumes": [],
"environment": [],
"mountPoints": [],
"ulimits": [],
"networkInterfaces": [],
"resourceRequirements": [
{
"value": "2",
"type": "VCPU"
}, {
"value": "256",
"type": "MEMORY"
}
],
"secrets": []
},
"tags": {
"resourceArn": "arn:aws:batch:us-east-1:123456789012:job/4c7599ae-0a82-49aa-ba5a-4727fcce14a8"
},
"propagateTags": false,
"platformCapabilities": []
}
}
마무리
오늘은 AWS EventBridge를 이용하여 Batch작업 후 처리를 하는 방법에 대해 알아보았습니다.
다음 글에서는 Batch 작업대기열이 Blocked(막히는) 경우<job queue blocked events>에 대한 처리 방법에 대해 알아보도록 하겠습니다.
'AWS' 카테고리의 다른 글
AWS Batch Job Queue Blocked 상태 처리 하기 (EventBridge) (0) | 2024.06.21 |
---|---|
AWS EKS NodeSelector 설정하기 (0) | 2024.02.19 |
AWS EKS tolerations, taints의 정의, 설정하기 (0) | 2024.02.05 |
AWS Batch와 EKS(k8s)를 사용하여 배치를 돌려보자 (0) | 2024.01.29 |
[AWS] SageMaker AutoScaling 자동화 (0) | 2023.08.07 |