Ctrl + k

or run

tessl search
Log in

Version

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/com.pulumi/aws@7.16.x

docs

common-patterns.mdgetting-started.mdindex.mdprovider.md
tile.json

tessl/maven-com-pulumi--aws

tessl install tessl/maven-com-pulumi--aws@7.16.0

Pulumi Java SDK for AWS providing strongly-typed Infrastructure-as-Code for 227 AWS service packages including compute, storage, databases, networking, security, analytics, machine learning, and more.

ecs.mddocs/services/compute/

ECS (Elastic Container Service)

Amazon ECS orchestrates Docker containers.

Core Imports

import com.pulumi.aws.ecs.Cluster;
import com.pulumi.aws.ecs.ClusterArgs;
import com.pulumi.aws.ecs.Service;
import com.pulumi.aws.ecs.ServiceArgs;
import com.pulumi.aws.ecs.TaskDefinition;
import com.pulumi.aws.ecs.TaskDefinitionArgs;
import com.pulumi.aws.ecs.CapacityProvider;
import com.pulumi.aws.ecs.CapacityProviderArgs;
import com.pulumi.aws.ecs.EcsFunctions;

Cluster Resource

@ResourceType(type="aws:ecs/cluster:Cluster")
public class Cluster extends com.pulumi.resources.CustomResource {
    public Cluster(String name);
    public Cluster(String name, @Nullable ClusterArgs args);

    public Output<String> id();
    public Output<String> arn();
    public Output<String> name();
}

public class ClusterArgs extends com.pulumi.resources.ResourceArgs {
    public static Builder builder() { return new Builder(); }

    public static final class Builder {
        public Builder name(Output<String> name);
        public Builder settings(Output<List<ClusterSettingArgs>> settings);
        public Builder configuration(Output<ClusterConfigurationArgs> configuration);
        public Builder tags(Output<Map<String, String>> tags);

        public ClusterArgs build();
    }
}

Task Definition Resource

@ResourceType(type="aws:ecs/taskDefinition:TaskDefinition")
public class TaskDefinition extends com.pulumi.resources.CustomResource {
    public TaskDefinition(String name, TaskDefinitionArgs args);

    public Output<String> arn();
    public Output<String> family();
    public Output<Integer> revision();
    public Output<String> containerDefinitions();
    public Output<Optional<String>> taskRoleArn();
    public Output<Optional<String>> executionRoleArn();
    public Output<Optional<String>> networkMode();
    public Output<Optional<String>> cpu();
    public Output<Optional<String>> memory();
}

public class TaskDefinitionArgs extends com.pulumi.resources.ResourceArgs {
    public static Builder builder() { return new Builder(); }

    public static final class Builder {
        public Builder family(Output<String> family);
        public Builder containerDefinitions(Output<String> containerDefinitions);
        public Builder taskRoleArn(Output<String> taskRoleArn);
        public Builder executionRoleArn(Output<String> executionRoleArn);
        public Builder networkMode(Output<String> networkMode);
        public Builder requiresCompatibilities(Output<List<String>> requiresCompatibilities);
        public Builder cpu(Output<String> cpu);
        public Builder memory(Output<String> memory);
        public Builder volumes(Output<List<TaskDefinitionVolumeArgs>> volumes);
        public Builder runtimePlatform(Output<TaskDefinitionRuntimePlatformArgs> runtimePlatform);
        public Builder tags(Output<Map<String, String>> tags);

        public TaskDefinitionArgs build();
    }
}

Service Resource

@ResourceType(type="aws:ecs/service:Service")
public class Service extends com.pulumi.resources.CustomResource {
    public Service(String name, ServiceArgs args);

    public Output<String> id();
    public Output<String> name();
    public Output<String> cluster();
    public Output<String> taskDefinition();
    public Output<Optional<Integer>> desiredCount();
    public Output<Optional<String>> launchType();
}

public class ServiceArgs extends com.pulumi.resources.ResourceArgs {
    public static Builder builder() { return new Builder(); }

    public static final class Builder {
        public Builder name(Output<String> name);
        public Builder cluster(Output<String> cluster);
        public Builder taskDefinition(Output<String> taskDefinition);
        public Builder desiredCount(Output<Integer> desiredCount);
        public Builder launchType(Output<String> launchType);
        public Builder networkConfiguration(Output<ServiceNetworkConfigurationArgs> networkConfiguration);
        public Builder loadBalancers(Output<List<ServiceLoadBalancerArgs>> loadBalancers);
        public Builder capacityProviderStrategies(Output<List<ServiceCapacityProviderStrategyArgs>> capacityProviderStrategies);
        public Builder deploymentConfiguration(Output<ServiceDeploymentConfigurationArgs> deploymentConfiguration);
        public Builder tags(Output<Map<String, String>> tags);

        public ServiceArgs build();
    }
}

Usage Example

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.aws.ecs.*;
import com.pulumi.aws.ecs.inputs.*;
import java.util.Map;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        // Create ECS cluster
        var cluster = new Cluster("my-cluster", ClusterArgs.builder()
            .name("my-app-cluster")
            .settings(ClusterSettingArgs.builder()
                .name("containerInsights")
                .value("enabled")
                .build())
            .build());

        // Create task definition
        var taskDefinition = new TaskDefinition("app-task", TaskDefinitionArgs.builder()
            .family("app-family")
            .networkMode("awsvpc")
            .requiresCompatibilities("FARGATE")
            .cpu("256")
            .memory("512")
            .executionRoleArn(executionRole.arn())
            .taskRoleArn(taskRole.arn())
            .containerDefinitions("""
                [{
                  "name": "app",
                  "image": "nginx:latest",
                  "portMappings": [{
                    "containerPort": 80,
                    "protocol": "tcp"
                  }],
                  "logConfiguration": {
                    "logDriver": "awslogs",
                    "options": {
                      "awslogs-group": "/ecs/app",
                      "awslogs-region": "us-east-1",
                      "awslogs-stream-prefix": "ecs"
                    }
                  }
                }]
                """)
            .build());

        // Create ECS service
        var service = new Service("app-service", ServiceArgs.builder()
            .name("app-service")
            .cluster(cluster.arn())
            .taskDefinition(taskDefinition.arn())
            .desiredCount(2)
            .launchType("FARGATE")
            .networkConfiguration(ServiceNetworkConfigurationArgs.builder()
                .subnets(subnetIds)
                .securityGroups(securityGroupId)
                .assignPublicIp(true)
                .build())
            .build());

        ctx.export("clusterArn", cluster.arn());
        ctx.export("serviceId", service.id());
    }
}