CloudWatch Event에서 이벤트 소스의 정보를 AWS Batch Job에 전달하는 매개 변수

4259 단어 AWS

개시하다


이 글은 AWS 공식 문서CloudWatch 이벤트를 대상으로 하는 AWS Batch 작업의 내용을 더욱 깊이 있게 논술한 것이다.

예와 함께


하고 싶은 일


이번에는 클라우드워치 이벤트를 일정 형태로 수행한 뒤 이벤트가 실행될 때의 날짜와 시간을 AWS Batch Job에 넘기는 게 하고 싶다.

바이두 상태


AWS Batch의 Job Definition은 다음과 같은 값date을 매개변수로 정의합니다.
CLI를 통해 표시되는 경우는 다음과 같습니다.
$ aws batch describe-job-definitions --job-definition-name "my-job-definition-name"
{
    "jobDefinitions": [
        {
            "jobDefinitionName": "mixlunch-matching-job-definition",
            "jobDefinitionArn": "arn:aws:batch:ap-northeast-1:XXXXXXXXXXXX:job-definition/mixlunch-matching-job-definition:5",
            "revision": 5,
            "status": "ACTIVE",
            "type": "container",
            "parameters": {
                "date": "2018-11-01T00:00:00Z"
            },
            "retryStrategy": {
                "attempts": 1
            },
            "containerProperties": {
                "image": "XXXXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/mixlunch-matching:latest",
                "vcpus": 1,
                "memory": 2000,
                "command": [
                    "python",
                    "./run.py",
                    "Ref::date"
                ],
.
.
위의 예에서 date 매개 변수는 Python 실행에서 매개 변수로 응용 프로그램에 전달됩니다.

CloudWatch Event의 설정 방법


이번 예는 일정 설정(cron)의 사건원을 이용한 것이다.CloudWatch Event 규칙의 이벤트 소스는 매우 다양하며, 후술한 설정 방법은 어느 이벤트 소스든 공통적이다.
사커수로 아래와 같다.

광장 왼쪽 아래 파란색 테두리는 활동원에서 온 샘플의 JSON 형식이다.
이번에 AWS Batch Job에게 맡기고 싶은 것은 레드박스 부분"time" 필드의 내용이다.
이를 위해 Squist 오른쪽에 있는 Configure input에서 Input Transformer를 설정합니다.
첫 번째 프레임워크는 이벤트 소스 JSON의 필드를 지정한 키에 전달하는 설정입니다.
{
  "detail": {
    "requestParameters": {
      "bucketName": "my-bucket"
    }
  }
}
위의 JSON 형식의 이벤트 소스라면 {"myValue": "$.detail.requestParameters.bucketName"}처럼 기술할 수 있습니다.
두 번째 프레임에서 첫 번째 획득한 키를 사용하여 AWS Batch Job의 매개변수로 지정합니다.
이번 예는 {"Parameters" : {"date": <TimeValue>}}로 AWS Batch Job이 정의한 date에 맡길 수 있다.
AWS CLI에서 다음을 확인할 수 있습니다.
$ aws events list-targets-by-rule --rule "matching"
{
    "Targets": [
        {
            "Id": "IdXXXXXXXXXXXX",
            "Arn": "arn:aws:batch:ap-northeast-1:XXXXXXXXXXXX:job-queue/mixlunch-matching-job-queue",
            "RoleArn": "arn:aws:iam::XXXXXXXXXXXX:role/service-role/AWS_Events_Invoke_Batch_Job_Queue_XXXXXXXXXXXX",
            "InputTransformer": {
                "InputPathsMap": {
                    "TimeValue": "$.time"
                },
                "InputTemplate": "{\"Parameters\" : {\"date\": <TimeValue>}}"
            },
            "BatchParameters": {
                "JobDefinition": "arn:aws:batch:ap-northeast-1:XXXXXXXXXXXX:job-definition/mixlunch-matching-job-definition:5",
                "JobName": "matching-job"
            }
        }
    ]
}

좋은 웹페이지 즐겨찾기