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.
A comprehensive Java SDK for Infrastructure-as-Code on Amazon Web Services. This package provides strongly-typed Java APIs for creating and managing AWS cloud resources across 227 AWS service packages.
Maven:
<dependency>
<groupId>com.pulumi</groupId>
<artifactId>aws</artifactId>
<version>7.16.0</version>
</dependency>Gradle:
implementation 'com.pulumi:aws:7.16.0'Getting Started Guide - Complete guide for first-time setup and basic usage
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.aws.s3.Bucket;
import com.pulumi.aws.s3.BucketArgs;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var bucket = new Bucket("my-bucket", BucketArgs.builder()
.bucket("my-unique-bucket-name")
.build());
ctx.export("bucketName", bucket.bucket());
}
}Common Patterns Guide - Quick reference for the most frequently used operations:
The Pulumi AWS Java SDK follows a consistent, auto-generated architecture:
CustomResourceOutput<T> type for asynchronous resource propertiescom.pulumi.aws/
├── Provider.java // AWS provider resource
├── ProviderArgs.java // Provider configuration
├── Config.java // Configuration accessor
├── AwsFunctions.java // Global data source functions
├── s3/ // S3 service
├── ec2/ // EC2 service (211 files)
├── lambda/ // Lambda service
└── ... (227 service packages total)Each service module follows this pattern:
<Resource>.java: Resource class<Resource>Args.java: Resource arguments with builder pattern<Service>Functions.java: Data source functionsinputs/: Nested input typesoutputs/: Nested output typesenums/: Enumeration typesProvider Configuration - Complete AWS provider configuration reference
import com.pulumi.aws.Provider;
import com.pulumi.aws.ProviderArgs;
var awsProvider = new Provider("aws", ProviderArgs.builder()
.region("us-west-2")
.profile("my-profile")
.build());Core Types - Detailed reference for core Pulumi types
Pulumi's core type for asynchronous values:
public class Output<T> {
public <U> Output<U> apply(Function<T, U> func);
public static <T> Output<T> of(T value);
public static <T> Output<List<T>> all(List<Output<T>> outputs);
}All resource arguments use the builder pattern:
var resource = new ResourceType("name", ResourceTypeArgs.builder()
.property1(value1)
.property2(value2)
.build());import com.pulumi.resources.CustomResourceOptions;
var resource = new ResourceType("name", args, CustomResourceOptions.builder()
.dependsOn(otherResource)
.protect(true)
.provider(customProvider)
.build());Quick Reference Table - Fast lookup of common resources and operations
| Task | Resource | Package |
|---|---|---|
| Create S3 bucket | Bucket | com.pulumi.aws.s3 |
| Launch EC2 instance | Instance | com.pulumi.aws.ec2 |
| Deploy Lambda function | Function | com.pulumi.aws.lambda |
| Create DynamoDB table | Table | com.pulumi.aws.dynamodb |
| Set up IAM role | Role | com.pulumi.aws.iam |
| Create RDS database | Instance | com.pulumi.aws.rds |
| Create VPC | Vpc | com.pulumi.aws.ec2 |
| Create security group | SecurityGroup | com.pulumi.aws.ec2 |
| Create CloudWatch alarm | MetricAlarm | com.pulumi.aws.cloudwatch |
| Create SNS topic | Topic | com.pulumi.aws.sns |
Practical guides for common infrastructure patterns:
Compute Services Documentation
Storage Services Documentation
Database Services Documentation
Networking Services Documentation
Security Services Documentation
ML & AI Services Documentation
Analytics Services Documentation
Integration Services Documentation
Container Services Documentation
Management Services Documentation
Additional Services Documentation
All AWS resources follow this consistent pattern:
var resource = new ResourceType("resourceName", ResourceTypeArgs.builder()
.requiredProperty(value)
.optionalProperty(value)
.tags(Map.of("Key", "Value"))
.build());Resource properties are returned as Output<T>:
Output<String> bucketName = bucket.bucket();
Output<String> bucketArn = bucket.arn();
// Transform outputs
Output<String> upperName = bucketName.apply(String::toUpperCase);
// Export outputs
ctx.export("bucketName", bucketName);Pulumi automatically tracks dependencies through Output references:
var subnet = new Subnet("subnet", SubnetArgs.builder()
.vpcId(vpc.id()) // Dependency on vpc
.build());
var instance = new Instance("web", InstanceArgs.builder()
.subnetId(subnet.id()) // Dependency on subnet
.build());Use data source functions to query existing AWS resources:
import com.pulumi.aws.ec2.Ec2Functions;
import com.pulumi.aws.ec2.inputs.GetAmiArgs;
var ami = Ec2Functions.getAmi(GetAmiArgs.builder()
.mostRecent(true)
.owners(List.of("amazon"))
.filters(List.of(GetAmiFilterArgs.builder()
.name("name")
.values(List.of("amzn2-ami-hvm-*"))
.build()))
.build());
// Use in resource
var instance = new Instance("web", InstanceArgs.builder()
.ami(ami.applyValue(result -> result.id()))
.build());Create resources in loops:
for (int i = 0; i < 3; i++) {
final int index = i;
new Bucket("bucket-" + index, BucketArgs.builder()
.bucket("my-bucket-" + index)
.tags(Map.of("Index", String.valueOf(index)))
.build());
}Use Java conditionals to control resource creation:
boolean enableLogging = config.requireBoolean("enableLogging");
if (enableLogging) {
new BucketLogging("logging", BucketLoggingArgs.builder()
.bucket(bucket.id())
.targetBucket(logBucket.id())
.build());
}This Knowledge Tile provides comprehensive documentation for AWS services organized by category. The Pulumi AWS SDK includes 227 service packages covering the complete AWS API surface. This documentation focuses on the core services that represent the majority of AWS infrastructure use cases.
AWS-level functions for querying account and region information:
import com.pulumi.aws.AwsFunctions;
// Get caller identity (account ID, user ARN)
var identity = AwsFunctions.getCallerIdentity();
// Get current region
var region = AwsFunctions.getRegion();
// List all regions
var regions = AwsFunctions.getRegions();
// Get AWS partition (aws, aws-cn, aws-us-gov)
var partition = AwsFunctions.getPartition();
// Get availability zones
var azs = AwsFunctions.getAvailabilityZones();import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.resources.CustomResourceOptions;
import com.pulumi.core.Output;import com.pulumi.aws.Provider;
import com.pulumi.aws.ProviderArgs;
import com.pulumi.aws.Config;
import com.pulumi.aws.AwsFunctions;// Import resource classes
import com.pulumi.aws.<service>.<Resource>;
import com.pulumi.aws.<service>.<Resource>Args;
// Import data source functions
import com.pulumi.aws.<service>.<Service>Functions;
// Import nested types
import com.pulumi.aws.<service>.inputs.*;
import com.pulumi.aws.<service>.outputs.*;
import com.pulumi.aws.<service>.enums.*;Examples:
// S3
import com.pulumi.aws.s3.Bucket;
import com.pulumi.aws.s3.BucketArgs;
import com.pulumi.aws.s3.S3Functions;
// EC2
import com.pulumi.aws.ec2.Instance;
import com.pulumi.aws.ec2.InstanceArgs;
import com.pulumi.aws.ec2.Ec2Functions;
// Lambda
import com.pulumi.aws.lambda.Function;
import com.pulumi.aws.lambda.FunctionArgs;
import com.pulumi.aws.lambda.LambdaFunctions;