Class ReplicationInstance


  • public class ReplicationInstance
    extends com.pulumi.resources.CustomResource
    Provides a DMS (Data Migration Service) replication instance resource. DMS replication instances can be created, updated, deleted, and imported. ## Example Usage Create required roles and then create a DMS instance, setting the dependsOn to the required role policy attachments.
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.iam.IamFunctions;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementPrincipalArgs;
     import com.pulumi.aws.iam.Role;
     import com.pulumi.aws.iam.RoleArgs;
     import com.pulumi.aws.iam.RolePolicyAttachment;
     import com.pulumi.aws.iam.RolePolicyAttachmentArgs;
     import com.pulumi.aws.dms.ReplicationInstance;
     import com.pulumi.aws.dms.ReplicationInstanceArgs;
     import com.pulumi.resources.CustomResourceOptions;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             // Database Migration Service requires the below IAM Roles to be created before
             // replication instances can be created. See the DMS Documentation for
             // additional information: https://docs.aws.amazon.com/dms/latest/userguide/security-iam.html#CHAP_Security.APIRole
             //  * dms-vpc-role
             //  * dms-cloudwatch-logs-role
             //  * dms-access-for-endpoint
             final var dmsAssumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                 .statements(GetPolicyDocumentStatementArgs.builder()
                     .principals(GetPolicyDocumentStatementPrincipalArgs.builder()
                         .identifiers("dms.amazonaws.com")
                         .type("Service")
                         .build())
                     .actions("sts:AssumeRole")
                     .build())
                 .build());
     
             var dms_access_for_endpoint = new Role("dms-access-for-endpoint", RoleArgs.builder()
                 .assumeRolePolicy(dmsAssumeRole.json())
                 .name("dms-access-for-endpoint")
                 .build());
     
             var dms_access_for_endpoint_AmazonDMSRedshiftS3Role = new RolePolicyAttachment("dms-access-for-endpoint-AmazonDMSRedshiftS3Role", RolePolicyAttachmentArgs.builder()
                 .policyArn("arn:aws:iam::aws:policy/service-role/AmazonDMSRedshiftS3Role")
                 .role(dms_access_for_endpoint.name())
                 .build());
     
             var dms_cloudwatch_logs_role = new Role("dms-cloudwatch-logs-role", RoleArgs.builder()
                 .assumeRolePolicy(dmsAssumeRole.json())
                 .name("dms-cloudwatch-logs-role")
                 .build());
     
             var dms_cloudwatch_logs_role_AmazonDMSCloudWatchLogsRole = new RolePolicyAttachment("dms-cloudwatch-logs-role-AmazonDMSCloudWatchLogsRole", RolePolicyAttachmentArgs.builder()
                 .policyArn("arn:aws:iam::aws:policy/service-role/AmazonDMSCloudWatchLogsRole")
                 .role(dms_cloudwatch_logs_role.name())
                 .build());
     
             var dms_vpc_role = new Role("dms-vpc-role", RoleArgs.builder()
                 .assumeRolePolicy(dmsAssumeRole.json())
                 .name("dms-vpc-role")
                 .build());
     
             var dms_vpc_role_AmazonDMSVPCManagementRole = new RolePolicyAttachment("dms-vpc-role-AmazonDMSVPCManagementRole", RolePolicyAttachmentArgs.builder()
                 .policyArn("arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole")
                 .role(dms_vpc_role.name())
                 .build());
     
             // Create a new replication instance
             var test = new ReplicationInstance("test", ReplicationInstanceArgs.builder()
                 .allocatedStorage(20)
                 .applyImmediately(true)
                 .autoMinorVersionUpgrade(true)
                 .availabilityZone("us-west-2c")
                 .engineVersion("3.1.4")
                 .kmsKeyArn("arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012")
                 .multiAz(false)
                 .preferredMaintenanceWindow("sun:10:30-sun:14:30")
                 .publiclyAccessible(true)
                 .replicationInstanceClass("dms.t3.micro")
                 .replicationInstanceId("test-dms-replication-instance-tf")
                 .replicationSubnetGroupId(test_dms_replication_subnet_group_tf.id())
                 .tags(Map.of("Name", "test"))
                 .vpcSecurityGroupIds("sg-12345678")
                 .build(), CustomResourceOptions.builder()
                     .dependsOn(                
                         dms_access_for_endpoint_AmazonDMSRedshiftS3Role,
                         dms_cloudwatch_logs_role_AmazonDMSCloudWatchLogsRole,
                         dms_vpc_role_AmazonDMSVPCManagementRole)
                     .build());
     
         }
     }
     
     
    ## Import Using `pulumi import`, import replication instances using the `replicationInstanceId`. For example: ```sh $ pulumi import aws:dms/replicationInstance:ReplicationInstance test test-dms-replication-instance-tf ```
    • Nested Class Summary

      • Nested classes/interfaces inherited from class com.pulumi.resources.CustomResource

        com.pulumi.resources.CustomResource.CustomResourceInternal
      • Nested classes/interfaces inherited from class com.pulumi.resources.Resource

        com.pulumi.resources.Resource.LazyField<T extends java.lang.Object>, com.pulumi.resources.Resource.LazyFields, com.pulumi.resources.Resource.ResourceInternal
    • Field Summary

      • Fields inherited from class com.pulumi.resources.Resource

        childResources, remote
    • Constructor Detail

      • ReplicationInstance

        public ReplicationInstance​(java.lang.String name)
        Parameters:
        name - The _unique_ name of the resulting resource.
      • ReplicationInstance

        public ReplicationInstance​(java.lang.String name,
                                   ReplicationInstanceArgs args)
        Parameters:
        name - The _unique_ name of the resulting resource.
        args - The arguments to use to populate this resource's properties.
      • ReplicationInstance

        public ReplicationInstance​(java.lang.String name,
                                   ReplicationInstanceArgs args,
                                   @Nullable
                                   com.pulumi.resources.CustomResourceOptions options)
        Parameters:
        name - The _unique_ name of the resulting resource.
        args - The arguments to use to populate this resource's properties.
        options - A bag of options that control this resource's behavior.
    • Method Detail

      • allocatedStorage

        public com.pulumi.core.Output<java.lang.Integer> allocatedStorage()
        Returns:
        The amount of storage (in gigabytes) to be initially allocated for the replication instance.
      • allowMajorVersionUpgrade

        public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> allowMajorVersionUpgrade()
        Returns:
        Indicates that major version upgrades are allowed.
      • applyImmediately

        public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> applyImmediately()
        Returns:
        Indicates whether the changes should be applied immediately or during the next maintenance window. Only used when updating an existing resource.
      • autoMinorVersionUpgrade

        public com.pulumi.core.Output<java.lang.Boolean> autoMinorVersionUpgrade()
        Returns:
        Indicates that minor engine upgrades will be applied automatically to the replication instance during the maintenance window.
      • availabilityZone

        public com.pulumi.core.Output<java.lang.String> availabilityZone()
        Returns:
        The EC2 Availability Zone that the replication instance will be created in.
      • dnsNameServers

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> dnsNameServers()
        Returns:
        A list of custom DNS name servers supported for the replication instance to access your on-premise source or target database. This list overrides the default name servers supported by the replication instance. You can specify a comma-separated list of internet addresses for up to four on-premise DNS name servers.
      • engineVersion

        public com.pulumi.core.Output<java.lang.String> engineVersion()
        Returns:
        The engine version number of the replication instance.
      • kerberosAuthenticationSettings

        public com.pulumi.core.Output<java.util.Optional<ReplicationInstanceKerberosAuthenticationSettings>> kerberosAuthenticationSettings()
        Returns:
        Configuration block for settings required for Kerberos authentication. See below.
      • kmsKeyArn

        public com.pulumi.core.Output<java.lang.String> kmsKeyArn()
        Returns:
        ARN for the KMS key that will be used to encrypt the connection parameters. If you do not specify a value for `kmsKeyArn`, then AWS DMS will use your default encryption key. AWS KMS creates the default encryption key for your AWS account. Your AWS account has a different default encryption key for each AWS region.
      • multiAz

        public com.pulumi.core.Output<java.lang.Boolean> multiAz()
        Returns:
        Specifies if the replication instance is a multi-az deployment. You cannot set the `availabilityZone` parameter if the `multiAz` parameter is set to `true`.
      • networkType

        public com.pulumi.core.Output<java.lang.String> networkType()
        Returns:
        The type of IP address protocol used by a replication instance. Valid values: `IPV4`, `DUAL`.
      • preferredMaintenanceWindow

        public com.pulumi.core.Output<java.lang.String> preferredMaintenanceWindow()
        Returns:
        The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).
      • publiclyAccessible

        public com.pulumi.core.Output<java.lang.Boolean> publiclyAccessible()
        Returns:
        Specifies the accessibility options for the replication instance. A value of true represents an instance with a public IP address. A value of false represents an instance with a private IP address.
      • region

        public com.pulumi.core.Output<java.lang.String> region()
        Returns:
        Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.
      • replicationInstanceArn

        public com.pulumi.core.Output<java.lang.String> replicationInstanceArn()
        Returns:
        ARN of the replication instance.
      • replicationInstanceClass

        public com.pulumi.core.Output<java.lang.String> replicationInstanceClass()
        Returns:
        The compute and memory capacity of the replication instance as specified by the replication instance class. See [AWS DMS User Guide](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.Types.html) for available instance sizes and advice on which one to choose.
      • replicationInstanceId

        public com.pulumi.core.Output<java.lang.String> replicationInstanceId()
        Returns:
        The replication instance identifier. This parameter is stored as a lowercase string.
      • replicationInstancePrivateIps

        public com.pulumi.core.Output<java.util.List<java.lang.String>> replicationInstancePrivateIps()
        Returns:
        A list of the private IP addresses of the replication instance.
      • replicationInstancePublicIps

        public com.pulumi.core.Output<java.util.List<java.lang.String>> replicationInstancePublicIps()
        Returns:
        A list of the public IP addresses of the replication instance.
      • replicationSubnetGroupId

        public com.pulumi.core.Output<java.lang.String> replicationSubnetGroupId()
        Returns:
        A subnet group to associate with the replication instance.
      • tags

        public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,​java.lang.String>>> tags()
        Returns:
        A map of tags to assign to the resource. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
      • tagsAll

        public com.pulumi.core.Output<java.util.Map<java.lang.String,​java.lang.String>> tagsAll()
        Returns:
        A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
      • vpcSecurityGroupIds

        public com.pulumi.core.Output<java.util.List<java.lang.String>> vpcSecurityGroupIds()
        Returns:
        A list of VPC security group IDs to be used with the replication instance. The VPC security groups must work with the VPC containing the replication instance.
      • get

        public static ReplicationInstance get​(java.lang.String name,
                                              com.pulumi.core.Output<java.lang.String> id,
                                              @Nullable
                                              ReplicationInstanceState state,
                                              @Nullable
                                              com.pulumi.resources.CustomResourceOptions options)
        Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.
        Parameters:
        name - The _unique_ name of the resulting resource.
        id - The _unique_ provider ID of the resource to lookup.
        state -
        options - Optional settings to control the behavior of the CustomResource.