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.

rds.mddocs/services/databases/

RDS (Relational Database Service)

Amazon RDS provides managed relational databases.

Core Imports

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;

Instance Resource

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();
    }
}

Cluster Resource

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();
    }
}

Cluster Instance Resource

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();
    }
}

Subnet Group Resource

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();
    }
}

Parameter Group Resource

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();
    }
}

Usage Example

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());
    }
}