AwsEcsArgs

AwsEcsArgs = AwsEcsClusterCapabilityArgs | AwsEcsTaskDefinitionCapabilityArgs | AwsEcsServiceCapabilityArgs | AwsEcsCapacityProviderCapabilityArgs

Input arguments for AwsEcs.

Remarks

Exactly one capability (cluster, taskDefinition, service, or capacityProvider) must be provided per component instance.

Logical identity fields (cluster.identity, taskDefinition.name, service.service.name, and capacityProvider.name) must be non-empty synchronous plain string values. Inputs/Outputs, promises, and apply-derived values are rejected fail-fast before resource construction. cluster.identity is logical-only; taskDefinition.name, service.service.name, and capacityProvider.name are shared logical/provider identities.

Example

CODE
// Cluster capability
const cluster = new AwsEcs({
  cluster: {
    identity: 'app-cluster',
  },
});

// Task-definition capability
const taskDefinition = new AwsEcs({
  taskDefinition: {
    name: 'app',
    cpu: '256',
    memory: '512',
    networkMode: 'awsvpc',
    requiresCompatibilities: ['FARGATE'],
    executionRole: 'arn:aws:iam::000000000000:role/ecsTaskExecutionRole',
    taskRole: 'arn:aws:iam::000000000000:role/ecsTaskRole',
    containerDefinitions: JSON.stringify([{ name: 'app', image: 'nginx', essential: true }]),
  },
});

// Service capability with inline task-definition input
const serviceInlineTaskDefinition = new AwsEcs({
  service: {
    cluster,
    taskDefinition: {
      name: 'appService',
      cpu: '256',
      memory: '512',
      networkMode: 'awsvpc',
      requiresCompatibilities: ['FARGATE'],
      executionRole: 'ecsTaskExecutionRoleName',
      taskRole: 'ecsTaskRoleName',
      containerDefinitions: JSON.stringify([{ name: 'app', image: 'nginx', essential: true }]),
    },
    service: {
      name: 'app',
      desiredCount: 1,
    },
  },
});

// Service capability with predefined default task-definition preset for a daemon service with cluster name lookup
const serviceDefaultTaskDefinition = new AwsEcs({
  service: {
    cluster: 'app-cluster',
    taskDefinition: buildAwsEcsStandaloneTaskDefinitionArgs({
      name: 'daemonService',
      executionRole: 'ecsTaskExecutionRoleName',
      taskRole: 'arn:aws:iam::000000000000:role/ecsTaskRole',
    }),
    service: {
      name: 'daemon',
      desiredCount: 1,
    },
  },
});