TaskDefinition
The TaskDefinition resource lets you manage AWS ECS TaskDefinitions which define how your containers should run, including specifying the CPU, memory, and networking configurations.
Minimal Example
Section titled “Minimal Example”Create a basic ECS TaskDefinition with required properties and a couple of common optional ones.
import AWS from "alchemy/aws/control";
const basicTaskDefinition = await AWS.ECS.TaskDefinition("basicTask", { family: "web-app", containerDefinitions: [{ name: "web", image: "nginx:latest", memory: "512", cpu: "256", portMappings: [{ containerPort: 80, hostPort: 80, protocol: "tcp" }] }], executionRoleArn: "arn:aws:iam::123456789012:role/ecsTaskExecutionRole", taskRoleArn: "arn:aws:iam::123456789012:role/ecsTaskRole"});
Advanced Configuration
Section titled “Advanced Configuration”Configure an ECS TaskDefinition with additional options including networking and fault injection.
const advancedTaskDefinition = await AWS.ECS.TaskDefinition("advancedTask", { family: "advanced-web-app", containerDefinitions: [{ name: "web", image: "nginx:latest", memory: "1024", cpu: "512", portMappings: [{ containerPort: 80, hostPort: 80, protocol: "tcp" }] }], networkMode: "awsvpc", placementConstraints: [{ type: "memberOf", expression: "attribute:ecs.availability-zone in [us-west-2a, us-west-2b]" }], enableFaultInjection: true, requiresCompatibilities: ["FARGATE"], memory: "2048", cpu: "1024"});
Resource with Multiple Containers
Section titled “Resource with Multiple Containers”Define a TaskDefinition that runs multiple containers for a microservices architecture.
const multiContainerTaskDefinition = await AWS.ECS.TaskDefinition("multiContainerTask", { family: "microservices-app", containerDefinitions: [ { name: "api", image: "myorg/api:latest", memory: "512", cpu: "256", portMappings: [{ containerPort: 8080, hostPort: 8080, protocol: "tcp" }] }, { name: "worker", image: "myorg/worker:latest", memory: "256", cpu: "128" } ], executionRoleArn: "arn:aws:iam::123456789012:role/ecsExecutionRole", taskRoleArn: "arn:aws:iam::123456789012:role/ecsWorkerRole"});
Using Inference Accelerators
Section titled “Using Inference Accelerators”Create a TaskDefinition that utilizes inference accelerators for machine learning workloads.
const mlTaskDefinition = await AWS.ECS.TaskDefinition("mlTask", { family: "ml-app", containerDefinitions: [{ name: "ml-model", image: "myorg/ml-model:latest", memory: "2048", cpu: "1024" }], inferenceAccelerators: [{ deviceName: "device1", deviceType: "ml.g4dn.xlarge" }], executionRoleArn: "arn:aws:iam::123456789012:role/ecsExecutionRole"});