Skip to content

Task

Source: src/AWS/ECS/Task.ts

A bundled ECS task definition.

Task bundles an inline Effect program, builds and pushes a Docker image to a generated ECR repository, provisions task + execution IAM roles and a CloudWatch log group, and registers a Fargate task definition. Each reconcile registers a new immutable revision.

Beyond the single bundled container you can declare task-level configuration (volumes, runtime platform, ephemeral storage, IPC/PID mode, placement constraints) and append additional sidecars for multi-container tasks.

const task = yield* Task("ApiTask", {
main: import.meta.url,
cpu: 256,
memory: 512,
port: 3000,
});
const task = yield* Task("ApiTask", {
main: import.meta.url,
port: 3000,
sidecars: [
{
name: "otel-collector",
image: "public.ecr.aws/aws-observability/aws-otel-collector:latest",
essential: false,
portMappings: [{ containerPort: 4317, protocol: "tcp" }],
},
],
});
const task = yield* Task("WorkerTask", {
main: import.meta.url,
runtimePlatform: { cpuArchitecture: "ARM64", operatingSystemFamily: "LINUX" },
ephemeralStorage: { sizeInGiB: 40 },
volumes: [
{
name: "data",
efsVolumeConfiguration: { fileSystemId: fileSystem.fileSystemId },
},
],
container: {
mountPoints: [{ sourceVolume: "data", containerPath: "/data" }],
},
});