CloudWatchEvents 입력으로 Batch 작업 정의 재정의

CloudWathEventsru - 규칙에서 AWS Batch에서 일괄 처리를 수행하는 구성에서는 CloudWatchEvent 규칙 설정의 입력 매개변수에서 입력 매개변수를 설정할 수 있습니다.
게다가 입력 파라미터 이외에 작업 정의의 vcpu나 환경 변수등의 파라미터의 오버라이드(override)도 가능하므로 그 방법을 소개하고 싶습니다.

TL:DR;


  • CloudWatchEvent 규칙 대상 InputContainerOverrides 추가
  • ex) 매개 변수 Env 정의 및 작업 정의 Vcpu를 4, 메모리를 2048로 덮어 쓰는 경우 Input
  • {"Parameters" : {"Env":"Prod" },"ContainerOverrides": { "Vcpus":4, "Memory":2048}}



  • 이용 용도


  • 하나의 작업 정의를 사용하고 싶지만 조건에 따라 환경 변수 및 vcpu와 같은 일부 매개 변수를 변경하려는 경우
  • 일부 환경 변수의 변경이나 vcpu의 변경 정도 있으면 작업 정의를 복수 준비하지 않고 끝난다


  • 설정 방법



    콘솔


  • CloudWatchEvent 규칙> 대상> 입력 설정> 상수 (JSON 텍스트)
  • 여기에 ContainerOverrides를 기술한다
  • 이미지에서 vcpu를 4로, 메모리를 2048로 덮어 씁니다.



  • aws-cli


  • 명령
  • aws events put-targets --rule [ルール名] --cli-input-json file://target.json

  • target.json

  • target.json
    {
      "Targets": [
        {
          "Id": "1",
          "Arn": "jobQueueArn",
          "RoleArn": "roleArn",
          "Input": "{\"Parameters\" : {\"Env\":\"Prod\" },\"ContainerOverrides\": { \"Vcpus\":4, \"Memory\":2048}}",
          "BatchParameters": {
            "JobDefinition": "jobDefinitionArn",
            "JobName": "jobName"
          }
        }
      ]
    }
    

    설정할 수 있는 속성



    아래의 JSON 속성이라면 모두 재정의하고 Batch를 실행할 수 있다고 생각합니다.
  • Command
  • 작업 런타임 명령

  • Environment
  • 환경 변수

  • InstanceType
  • 다중 노드 병렬 작업에 사용할 인스턴스 유형

  • Memory
  • 작업에 사용할 메모리

  • Vcpus
  • 작업에 사용할 vcpu 수

  • ResourceRequirements
  • GPU 사용 설정

  • 
    {
      "ContainerOverrides": {
        "Command": "echo 'hello world'",
        "Environment": [
          {
            "Name": "env",
            "Value": "prod"
          }
        ],
        "InstanceType": "m5.large",
        "Memory": 2048,
        "Vcpus": 2,
        "ResourceRequirements": {
          "Type": "GPU",
          "Value": "2"
        }
      }
    }
    

    좋은 웹페이지 즐겨찾기