Skip to content

JobDefinition ​

The JobDefinition resource allows you to define and manage AWS Batch JobDefinitions for running batch jobs in the cloud.

Minimal Example ​

Create a basic JobDefinition with essential properties:

ts
import AWS from "alchemy/aws/control";

const basicJobDefinition = await AWS.Batch.JobDefinition("basicJobDefinition", {
  type: "container",
  containerProperties: {
    image: "my-docker-image:latest",
    vcpus: 2,
    memory: 4096,
    command: ["python", "script.py"],
    jobRoleArn: "arn:aws:iam::123456789012:role/myJobRole"
  },
  retryStrategy: {
    attempts: 3
  }
});

Advanced Configuration ​

Configure a JobDefinition with additional properties such as timeout and scheduling priority:

ts
const advancedJobDefinition = await AWS.Batch.JobDefinition("advancedJobDefinition", {
  type: "container",
  containerProperties: {
    image: "my-docker-image:latest",
    vcpus: 4,
    memory: 8192,
    command: ["python", "advanced_script.py"],
    jobRoleArn: "arn:aws:iam::123456789012:role/myAdvancedJobRole"
  },
  timeout: {
    attemptDurationSeconds: 3600
  },
  schedulingPriority: 1,
  tags: {
    Environment: "Production",
    Department: "DataProcessing"
  }
});

Using EKS Properties ​

Define a JobDefinition that utilizes EKS properties for Kubernetes compatibility:

ts
const eksJobDefinition = await AWS.Batch.JobDefinition("eksJobDefinition", {
  type: "container",
  eksProperties: {
    podProperties: {
      serviceAccountName: "my-service-account",
      networkConfiguration: {
        assignPublicIp: "ENABLED",
        subnets: ["subnet-abcde123"],
        securityGroups: ["sg-12345678"]
      }
    }
  },
  containerProperties: {
    image: "my-eks-docker-image:latest",
    vcpus: 2,
    memory: 2048,
    command: ["./run_eks_task.sh"]
  }
});

Propagating Tags ​

Create a JobDefinition that propagates tags to associated resources:

ts
const taggedJobDefinition = await AWS.Batch.JobDefinition("taggedJobDefinition", {
  type: "container",
  containerProperties: {
    image: "my-tagged-image:latest",
    vcpus: 2,
    memory: 2048,
    command: ["./run_tagged_task.sh"],
    jobRoleArn: "arn:aws:iam::123456789012:role/myTaggedJobRole"
  },
  propagateTags: true,
  tags: {
    Project: "BatchProcessing",
    Owner: "TeamAlpha"
  }
});