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.

container-services.mddocs/services/

AWS Container Services

This document covers Pulumi AWS Java SDK container services for running containerized applications.

Services Covered

  • ECS: Elastic Container Service (Cluster, Service, TaskDefinition, CapacityProvider)
  • ECR: Elastic Container Registry (Repository, LifecyclePolicy)
  • ECR Public: Public container registry
  • EKS: Elastic Kubernetes Service (Cluster, NodeGroup, FargateProfile, Addon)
  • App Runner: Containerized web applications
  • App Mesh: Service mesh (Mesh, VirtualNode, VirtualService)

ECS (Elastic Container Service)

Amazon ECS provides container orchestration.

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.ClusterCapacityProviders;
import com.pulumi.aws.ecs.ClusterCapacityProvidersArgs;

Cluster Resource

@ResourceType(type="aws:ecs/cluster:Cluster")
public class Cluster extends com.pulumi.resources.CustomResource {
    public Cluster(String name, ClusterArgs args);
    
    public Output<String> id();
    public Output<String> arn();
    public Output<String> name();
    public Output<Optional<List<ClusterConfiguration>>> configurations();
    public Output<Optional<List<ClusterSetting>>> settings();
    public Output<Optional<Map<String, String>>> tags();
}

public class ClusterArgs extends com.pulumi.resources.ResourceArgs {
    public static Builder builder();
    
    public static final class Builder {
        public Builder name(Output<String> name);
        public Builder configurations(Output<List<ClusterConfigurationArgs>> configurations);
        public Builder settings(Output<List<ClusterSettingArgs>> settings);
        public Builder tags(Output<Map<String, String>> tags);
        public ClusterArgs build();
    }
}

TaskDefinition Resource

@ResourceType(type="aws:ecs/taskDefinition:TaskDefinition")
public class TaskDefinition extends com.pulumi.resources.CustomResource {
    public TaskDefinition(String name, TaskDefinitionArgs args);
    
    public Output<String> id();
    public Output<String> arn();
    public Output<String> family();
    public Output<String> containerDefinitions();
    public Output<Optional<String>> cpu();
    public Output<Optional<String>> memory();
    public Output<Optional<String>> networkMode();
    public Output<Optional<List<String>>> requiresCompatibilities();
    public Output<Optional<String>> taskRoleArn();
    public Output<Optional<String>> executionRoleArn();
    public Output<Optional<Map<String, String>>> tags();
}

public class TaskDefinitionArgs extends com.pulumi.resources.ResourceArgs {
    public static Builder builder();
    
    public static final class Builder {
        public Builder family(Output<String> family);
        public Builder containerDefinitions(Output<String> containerDefinitions);
        public Builder cpu(Output<String> cpu);
        public Builder memory(Output<String> memory);
        public Builder networkMode(Output<String> networkMode);
        public Builder requiresCompatibilities(Output<List<String>> requiresCompatibilities);
        public Builder taskRoleArn(Output<String> taskRoleArn);
        public Builder executionRoleArn(Output<String> executionRoleArn);
        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 Output<Optional<ServiceNetworkConfiguration>> networkConfiguration();
    public Output<Optional<List<ServiceLoadBalancer>>> loadBalancers();
    public Output<Optional<Map<String, String>>> tags();
}

public class ServiceArgs extends com.pulumi.resources.ResourceArgs {
    public static Builder 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 tags(Output<Map<String, String>> tags);
        public ServiceArgs build();
    }
}

ECR (Elastic Container Registry)

Amazon ECR provides container image storage.

Core Imports

import com.pulumi.aws.ecr.Repository;
import com.pulumi.aws.ecr.RepositoryArgs;
import com.pulumi.aws.ecr.LifecyclePolicy;
import com.pulumi.aws.ecr.LifecyclePolicyArgs;
import com.pulumi.aws.ecr.RepositoryPolicy;
import com.pulumi.aws.ecr.RepositoryPolicyArgs;

Repository Resource

@ResourceType(type="aws:ecr/repository:Repository")
public class Repository extends com.pulumi.resources.CustomResource {
    public Repository(String name, RepositoryArgs args);
    
    public Output<String> id();
    public Output<String> arn();
    public Output<String> name();
    public Output<String> repositoryUrl();
    public Output<String> registryId();
    public Output<Optional<RepositoryEncryptionConfiguration>> encryptionConfigurations();
    public Output<Optional<String>> imageScanningConfiguration();
    public Output<Optional<String>> imageTagMutability();
    public Output<Optional<Map<String, String>>> tags();
}

public class RepositoryArgs extends com.pulumi.resources.ResourceArgs {
    public static Builder builder();
    
    public static final class Builder {
        public Builder name(Output<String> name);
        public Builder encryptionConfigurations(Output<List<RepositoryEncryptionConfigurationArgs>> encryptionConfigurations);
        public Builder imageScanningConfiguration(Output<RepositoryImageScanningConfigurationArgs> imageScanningConfiguration);
        public Builder imageTagMutability(Output<String> imageTagMutability);
        public Builder tags(Output<Map<String, String>> tags);
        public RepositoryArgs build();
    }
}

EKS (Elastic Kubernetes Service)

Amazon EKS provides managed Kubernetes.

Core Imports

import com.pulumi.aws.eks.Cluster;
import com.pulumi.aws.eks.ClusterArgs;
import com.pulumi.aws.eks.NodeGroup;
import com.pulumi.aws.eks.NodeGroupArgs;
import com.pulumi.aws.eks.FargateProfile;
import com.pulumi.aws.eks.FargateProfileArgs;
import com.pulumi.aws.eks.Addon;
import com.pulumi.aws.eks.AddonArgs;

Cluster Resource

@ResourceType(type="aws:eks/cluster:Cluster")
public class Cluster extends com.pulumi.resources.CustomResource {
    public Cluster(String name, ClusterArgs args);
    
    public Output<String> id();
    public Output<String> arn();
    public Output<String> name();
    public Output<String> roleArn();
    public Output<ClusterVpcConfig> vpcConfig();
    public Output<String> endpoint();
    public Output<String> version();
    public Output<Optional<ClusterEncryptionConfig>> encryptionConfig();
    public Output<Optional<Map<String, String>>> tags();
}

public class ClusterArgs extends com.pulumi.resources.ResourceArgs {
    public static Builder builder();
    
    public static final class Builder {
        public Builder name(Output<String> name);
        public Builder roleArn(Output<String> roleArn);
        public Builder vpcConfig(Output<ClusterVpcConfigArgs> vpcConfig);
        public Builder version(Output<String> version);
        public Builder encryptionConfig(Output<ClusterEncryptionConfigArgs> encryptionConfig);
        public Builder tags(Output<Map<String, String>> tags);
        public ClusterArgs build();
    }
}

NodeGroup Resource

@ResourceType(type="aws:eks/nodeGroup:NodeGroup")
public class NodeGroup extends com.pulumi.resources.CustomResource {
    public NodeGroup(String name, NodeGroupArgs args);
    
    public Output<String> id();
    public Output<String> arn();
    public Output<String> clusterName();
    public Output<String> nodeGroupName();
    public Output<String> nodeRoleArn();
    public Output<List<String>> subnetIds();
    public Output<NodeGroupScalingConfig> scalingConfig();
    public Output<Optional<List<String>>> instanceTypes();
    public Output<Optional<Map<String, String>>> tags();
}

public class NodeGroupArgs extends com.pulumi.resources.ResourceArgs {
    public static Builder builder();
    
    public static final class Builder {
        public Builder clusterName(Output<String> clusterName);
        public Builder nodeGroupName(Output<String> nodeGroupName);
        public Builder nodeRoleArn(Output<String> nodeRoleArn);
        public Builder subnetIds(Output<List<String>> subnetIds);
        public Builder scalingConfig(Output<NodeGroupScalingConfigArgs> scalingConfig);
        public Builder instanceTypes(Output<List<String>> instanceTypes);
        public Builder tags(Output<Map<String, String>> tags);
        public NodeGroupArgs build();
    }
}

Usage Examples

ECS Fargate Service

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

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

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

        // Create Task Definition
        var taskDef = new TaskDefinition("appTask", TaskDefinitionArgs.builder()
            .family("app-task")
            .networkMode("awsvpc")
            .requiresCompatibilities(List.of("FARGATE"))
            .cpu("256")
            .memory("512")
            .executionRoleArn("arn:aws:iam::123456789012:role/ecsTaskExecutionRole")
            .containerDefinitions("""
                [{
                  "name": "app",
                  "image": "123456789012.dkr.ecr.us-west-2.amazonaws.com/app:latest",
                  "portMappings": [{
                    "containerPort": 80,
                    "protocol": "tcp"
                  }]
                }]
                """)
            .build());

        // Create Service
        var service = new Service("appService", ServiceArgs.builder()
            .name("app-service")
            .cluster(cluster.arn())
            .taskDefinition(taskDef.arn())
            .desiredCount(2)
            .launchType("FARGATE")
            .networkConfiguration(ServiceNetworkConfigurationArgs.builder()
                .subnets(List.of("subnet-12345", "subnet-67890"))
                .securityGroups(List.of("sg-12345"))
                .assignPublicIp(true)
                .build())
            .build());

        ctx.export("clusterName", cluster.name());
        ctx.export("serviceName", service.name());
    }
}