docs
reference
services
tessl install tessl/maven-com-pulumi--aws@7.16.0Pulumi 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.
This document covers Pulumi AWS Java SDK container services for running containerized applications.
Amazon ECS provides container orchestration.
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;@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();
}
}@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();
}
}@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();
}
}Amazon ECR provides container image storage.
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;@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();
}
}Amazon EKS provides managed Kubernetes.
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;@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();
}
}@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();
}
}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());
}
}