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.
Amazon RDS provides managed relational databases.
import com.pulumi.aws.rds.Instance;
import com.pulumi.aws.rds.InstanceArgs;
import com.pulumi.aws.rds.Cluster;
import com.pulumi.aws.rds.ClusterArgs;
import com.pulumi.aws.rds.ClusterInstance;
import com.pulumi.aws.rds.ClusterInstanceArgs;
import com.pulumi.aws.rds.SubnetGroup;
import com.pulumi.aws.rds.SubnetGroupArgs;
import com.pulumi.aws.rds.ParameterGroup;
import com.pulumi.aws.rds.ParameterGroupArgs;
import com.pulumi.aws.rds.OptionGroup;
import com.pulumi.aws.rds.OptionGroupArgs;
import com.pulumi.aws.rds.Snapshot;
import com.pulumi.aws.rds.SnapshotArgs;
import com.pulumi.aws.rds.RdsFunctions;Create and manage RDS database instances.
@ResourceType(type="aws:rds/instance:Instance")
public class Instance extends com.pulumi.resources.CustomResource {
public Instance(String name, InstanceArgs args);
public Instance(String name, InstanceArgs args, @Nullable CustomResourceOptions options);
// Exported Properties
public Output<String> id();
public Output<String> arn();
public Output<String> identifier();
public Output<String> engine();
public Output<String> engineVersion();
public Output<String> instanceClass();
public Output<Integer> allocatedStorage();
public Output<String> dbName();
public Output<String> username();
public Output<String> address();
public Output<Integer> port();
public Output<String> endpoint();
public Output<String> hostedZoneId();
public Output<String> status();
public Output<Optional<String>> availabilityZone();
public Output<Optional<Boolean>> multiAz();
public Output<Optional<String>> dbSubnetGroupName();
public Output<Optional<List<String>>> vpcSecurityGroupIds();
public Output<Optional<String>> parameterGroupName();
public Output<Optional<String>> optionGroupName();
public Output<Optional<Boolean>> publiclyAccessible();
public Output<Optional<Boolean>> storageEncrypted();
public Output<Optional<String>> kmsKeyId();
public Output<Optional<Integer>> backupRetentionPeriod();
public Output<Optional<String>> backupWindow();
public Output<Optional<String>> maintenanceWindow();
public Output<Optional<Map<String, String>>> tags();
}
public class InstanceArgs extends com.pulumi.resources.ResourceArgs {
public static Builder builder() { return new Builder(); }
public static final class Builder {
// Required
public Builder engine(Output<String> engine);
public Builder instanceClass(Output<String> instanceClass);
// Optional but common
public Builder identifier(Output<String> identifier);
public Builder allocatedStorage(Output<Integer> allocatedStorage);
public Builder dbName(Output<String> dbName);
public Builder username(Output<String> username);
public Builder password(Output<String> password);
public Builder engineVersion(Output<String> engineVersion);
public Builder availabilityZone(Output<String> availabilityZone);
public Builder multiAz(Output<Boolean> multiAz);
public Builder dbSubnetGroupName(Output<String> dbSubnetGroupName);
public Builder vpcSecurityGroupIds(Output<List<String>> vpcSecurityGroupIds);
public Builder parameterGroupName(Output<String> parameterGroupName);
public Builder optionGroupName(Output<String> optionGroupName);
public Builder publiclyAccessible(Output<Boolean> publiclyAccessible);
public Builder storageType(Output<String> storageType);
public Builder storageEncrypted(Output<Boolean> storageEncrypted);
public Builder kmsKeyId(Output<String> kmsKeyId);
public Builder iops(Output<Integer> iops);
public Builder backupRetentionPeriod(Output<Integer> backupRetentionPeriod);
public Builder backupWindow(Output<String> backupWindow);
public Builder maintenanceWindow(Output<String> maintenanceWindow);
public Builder skipFinalSnapshot(Output<Boolean> skipFinalSnapshot);
public Builder finalSnapshotIdentifier(Output<String> finalSnapshotIdentifier);
public Builder deletionProtection(Output<Boolean> deletionProtection);
public Builder tags(Output<Map<String, String>> tags);
public InstanceArgs build();
}
}Create Aurora database clusters.
@ResourceType(type="aws:rds/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> clusterIdentifier();
public Output<String> engine();
public Output<String> engineVersion();
public Output<String> databaseName();
public Output<String> masterUsername();
public Output<String> endpoint();
public Output<String> readerEndpoint();
public Output<Integer> port();
public Output<String> hostedZoneId();
public Output<Optional<List<String>>> availabilityZones();
public Output<Optional<String>> dbSubnetGroupName();
public Output<Optional<List<String>>> vpcSecurityGroupIds();
public Output<Optional<String>> dbClusterParameterGroupName();
public Output<Optional<Boolean>> storageEncrypted();
public Output<Optional<String>> kmsKeyId();
}
public class ClusterArgs extends com.pulumi.resources.ResourceArgs {
public static Builder builder() { return new Builder(); }
public static final class Builder {
public Builder engine(Output<String> engine);
public Builder clusterIdentifier(Output<String> clusterIdentifier);
public Builder masterUsername(Output<String> masterUsername);
public Builder masterPassword(Output<String> masterPassword);
public Builder databaseName(Output<String> databaseName);
public Builder engineVersion(Output<String> engineVersion);
public Builder availabilityZones(Output<List<String>> availabilityZones);
public Builder dbSubnetGroupName(Output<String> dbSubnetGroupName);
public Builder vpcSecurityGroupIds(Output<List<String>> vpcSecurityGroupIds);
public Builder dbClusterParameterGroupName(Output<String> dbClusterParameterGroupName);
public Builder storageEncrypted(Output<Boolean> storageEncrypted);
public Builder kmsKeyId(Output<String> kmsKeyId);
public Builder backupRetentionPeriod(Output<Integer> backupRetentionPeriod);
public Builder preferredBackupWindow(Output<String> preferredBackupWindow);
public Builder preferredMaintenanceWindow(Output<String> preferredMaintenanceWindow);
public Builder skipFinalSnapshot(Output<Boolean> skipFinalSnapshot);
public Builder finalSnapshotIdentifier(Output<String> finalSnapshotIdentifier);
public Builder deletionProtection(Output<Boolean> deletionProtection);
public Builder tags(Output<Map<String, String>> tags);
public ClusterArgs build();
}
}Create instances within Aurora clusters.
@ResourceType(type="aws:rds/clusterInstance:ClusterInstance")
public class ClusterInstance extends com.pulumi.resources.CustomResource {
public ClusterInstance(String name, ClusterInstanceArgs args);
public Output<String> id();
public Output<String> arn();
public Output<String> identifier();
public Output<String> clusterIdentifier();
public Output<String> engine();
public Output<String> instanceClass();
public Output<String> endpoint();
public Output<Integer> port();
public Output<String> writer();
}
public class ClusterInstanceArgs extends com.pulumi.resources.ResourceArgs {
public static Builder builder() { return new Builder(); }
public static final class Builder {
public Builder clusterIdentifier(Output<String> clusterIdentifier);
public Builder identifier(Output<String> identifier);
public Builder instanceClass(Output<String> instanceClass);
public Builder engine(Output<String> engine);
public Builder engineVersion(Output<String> engineVersion);
public Builder publiclyAccessible(Output<Boolean> publiclyAccessible);
public Builder dbSubnetGroupName(Output<String> dbSubnetGroupName);
public Builder dbParameterGroupName(Output<String> dbParameterGroupName);
public Builder promotionTier(Output<Integer> promotionTier);
public Builder tags(Output<Map<String, String>> tags);
public ClusterInstanceArgs build();
}
}Define database subnet groups for VPC.
@ResourceType(type="aws:rds/subnetGroup:SubnetGroup")
public class SubnetGroup extends com.pulumi.resources.CustomResource {
public SubnetGroup(String name, SubnetGroupArgs args);
public Output<String> id();
public Output<String> arn();
public Output<String> name();
public Output<List<String>> subnetIds();
public Output<Optional<String>> description();
}
public class SubnetGroupArgs 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 subnetIds(Output<List<String>> subnetIds);
public Builder description(Output<String> description);
public Builder tags(Output<Map<String, String>> tags);
public SubnetGroupArgs build();
}
}Configure database parameters.
@ResourceType(type="aws:rds/parameterGroup:ParameterGroup")
public class ParameterGroup extends com.pulumi.resources.CustomResource {
public ParameterGroup(String name, ParameterGroupArgs args);
public Output<String> id();
public Output<String> arn();
public Output<String> name();
public Output<String> family();
public Output<Optional<String>> description();
}
public class ParameterGroupArgs 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 family(Output<String> family);
public Builder description(Output<String> description);
public Builder parameters(Output<List<ParameterGroupParameterArgs>> parameters);
public Builder tags(Output<Map<String, String>> tags);
public ParameterGroupArgs build();
}
}import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.aws.rds.*;
import com.pulumi.aws.rds.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 subnet group
var dbSubnetGroup = new SubnetGroup("db-subnet-group", SubnetGroupArgs.builder()
.name("my-db-subnet-group")
.subnetIds(privateSubnetIds)
.description("Database subnet group")
.tags(Map.of("Name", "DB Subnet Group"))
.build());
// Create parameter group
var parameterGroup = new ParameterGroup("db-params", ParameterGroupArgs.builder()
.name("my-db-params")
.family("postgres15")
.parameters(
ParameterGroupParameterArgs.builder()
.name("max_connections")
.value("100")
.build(),
ParameterGroupParameterArgs.builder()
.name("shared_buffers")
.value("256MB")
.build()
)
.build());
// Create RDS instance
var database = new Instance("postgres-db", InstanceArgs.builder()
.identifier("my-postgres-db")
.engine("postgres")
.engineVersion("15.4")
.instanceClass("db.t3.medium")
.allocatedStorage(100)
.storageType("gp3")
.storageEncrypted(true)
.dbName("myapp")
.username("admin")
.password(dbPassword)
.dbSubnetGroupName(dbSubnetGroup.name())
.vpcSecurityGroupIds(dbSecurityGroup.id().applyValue(List::of))
.parameterGroupName(parameterGroup.name())
.multiAz(true)
.publiclyAccessible(false)
.backupRetentionPeriod(7)
.backupWindow("03:00-04:00")
.maintenanceWindow("Mon:04:00-Mon:05:00")
.skipFinalSnapshot(false)
.finalSnapshotIdentifier("my-postgres-db-final-snapshot")
.deletionProtection(true)
.tags(Map.of(
"Environment", "Production",
"Application", "MyApp"
))
.build());
// Create Aurora cluster
var cluster = new Cluster("aurora-cluster", ClusterArgs.builder()
.clusterIdentifier("my-aurora-cluster")
.engine("aurora-postgresql")
.engineVersion("15.3")
.databaseName("myapp")
.masterUsername("admin")
.masterPassword(dbPassword)
.dbSubnetGroupName(dbSubnetGroup.name())
.vpcSecurityGroupIds(dbSecurityGroup.id().applyValue(List::of))
.storageEncrypted(true)
.backupRetentionPeriod(7)
.preferredBackupWindow("03:00-04:00")
.preferredMaintenanceWindow("Mon:04:00-Mon:05:00")
.skipFinalSnapshot(false)
.deletionProtection(true)
.build());
// Create Aurora cluster instances
var clusterInstance1 = new ClusterInstance("aurora-instance-1", ClusterInstanceArgs.builder()
.clusterIdentifier(cluster.id())
.identifier("aurora-instance-1")
.instanceClass("db.r6g.large")
.engine(cluster.engine())
.engineVersion(cluster.engineVersion())
.promotionTier(0)
.build());
var clusterInstance2 = new ClusterInstance("aurora-instance-2", ClusterInstanceArgs.builder()
.clusterIdentifier(cluster.id())
.identifier("aurora-instance-2")
.instanceClass("db.r6g.large")
.engine(cluster.engine())
.engineVersion(cluster.engineVersion())
.promotionTier(1)
.build());
ctx.export("dbEndpoint", database.endpoint());
ctx.export("clusterEndpoint", cluster.endpoint());
ctx.export("clusterReaderEndpoint", cluster.readerEndpoint());
}
}