ReplicationInstance class

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.

import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";

// 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
const dmsAssumeRole = aws.iam.getPolicyDocument({
    statements: [{
        principals: [{
            identifiers: ["dms.amazonaws.com"],
            type: "Service",
        }],
        actions: ["sts:AssumeRole"],
    }],
});
const dms_access_for_endpoint = new aws.iam.Role("dms-access-for-endpoint", {
    assumeRolePolicy: dmsAssumeRole.then(dmsAssumeRole => dmsAssumeRole.json),
    name: "dms-access-for-endpoint",
});
const dms_access_for_endpoint_AmazonDMSRedshiftS3Role = new aws.iam.RolePolicyAttachment("dms-access-for-endpoint-AmazonDMSRedshiftS3Role", {
    policyArn: "arn:aws:iam::aws:policy/service-role/AmazonDMSRedshiftS3Role",
    role: dms_access_for_endpoint.name,
});
const dms_cloudwatch_logs_role = new aws.iam.Role("dms-cloudwatch-logs-role", {
    assumeRolePolicy: dmsAssumeRole.then(dmsAssumeRole => dmsAssumeRole.json),
    name: "dms-cloudwatch-logs-role",
});
const dms_cloudwatch_logs_role_AmazonDMSCloudWatchLogsRole = new aws.iam.RolePolicyAttachment("dms-cloudwatch-logs-role-AmazonDMSCloudWatchLogsRole", {
    policyArn: "arn:aws:iam::aws:policy/service-role/AmazonDMSCloudWatchLogsRole",
    role: dms_cloudwatch_logs_role.name,
});
const dms_vpc_role = new aws.iam.Role("dms-vpc-role", {
    assumeRolePolicy: dmsAssumeRole.then(dmsAssumeRole => dmsAssumeRole.json),
    name: "dms-vpc-role",
});
const dms_vpc_role_AmazonDMSVPCManagementRole = new aws.iam.RolePolicyAttachment("dms-vpc-role-AmazonDMSVPCManagementRole", {
    policyArn: "arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole",
    role: dms_vpc_role.name,
});
// Create a new replication instance
const test = new aws.dms.ReplicationInstance("test", {
    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: {
        Name: "test",
    },
    vpcSecurityGroupIds: ["sg-12345678"],
}, {
    dependsOn: [
        dms_access_for_endpoint_AmazonDMSRedshiftS3Role,
        dms_cloudwatch_logs_role_AmazonDMSCloudWatchLogsRole,
        dms_vpc_role_AmazonDMSVPCManagementRole,
    ],
});
import pulumi
import pulumi_aws as aws

# 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
dms_assume_role = aws.iam.get_policy_document(statements=[{
    "principals": [{
        "identifiers": ["dms.amazonaws.com"],
        "type": "Service",
    }],
    "actions": ["sts:AssumeRole"],
}])
dms_access_for_endpoint = aws.iam.Role("dms-access-for-endpoint",
    assume_role_policy=dms_assume_role.json,
    name="dms-access-for-endpoint")
dms_access_for_endpoint__amazon_dms_redshift_s3_role = aws.iam.RolePolicyAttachment("dms-access-for-endpoint-AmazonDMSRedshiftS3Role",
    policy_arn="arn:aws:iam::aws:policy/service-role/AmazonDMSRedshiftS3Role",
    role=dms_access_for_endpoint.name)
dms_cloudwatch_logs_role = aws.iam.Role("dms-cloudwatch-logs-role",
    assume_role_policy=dms_assume_role.json,
    name="dms-cloudwatch-logs-role")
dms_cloudwatch_logs_role__amazon_dms_cloud_watch_logs_role = aws.iam.RolePolicyAttachment("dms-cloudwatch-logs-role-AmazonDMSCloudWatchLogsRole",
    policy_arn="arn:aws:iam::aws:policy/service-role/AmazonDMSCloudWatchLogsRole",
    role=dms_cloudwatch_logs_role.name)
dms_vpc_role = aws.iam.Role("dms-vpc-role",
    assume_role_policy=dms_assume_role.json,
    name="dms-vpc-role")
dms_vpc_role__amazon_dmsvpc_management_role = aws.iam.RolePolicyAttachment("dms-vpc-role-AmazonDMSVPCManagementRole",
    policy_arn="arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole",
    role=dms_vpc_role.name)
# Create a new replication instance
test = aws.dms.ReplicationInstance("test",
    allocated_storage=20,
    apply_immediately=True,
    auto_minor_version_upgrade=True,
    availability_zone="us-west-2c",
    engine_version="3.1.4",
    kms_key_arn="arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012",
    multi_az=False,
    preferred_maintenance_window="sun:10:30-sun:14:30",
    publicly_accessible=True,
    replication_instance_class="dms.t3.micro",
    replication_instance_id="test-dms-replication-instance-tf",
    replication_subnet_group_id=test_dms_replication_subnet_group_tf["id"],
    tags={
        "Name": "test",
    },
    vpc_security_group_ids=["sg-12345678"],
    opts = pulumi.ResourceOptions(depends_on=[
            dms_access_for_endpoint__amazon_dms_redshift_s3_role,
            dms_cloudwatch_logs_role__amazon_dms_cloud_watch_logs_role,
            dms_vpc_role__amazon_dmsvpc_management_role,
        ]))
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;

return await Deployment.RunAsync(() =>
{
    // 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
    var dmsAssumeRole = Aws.Iam.GetPolicyDocument.Invoke(new()
    {
        Statements = new[]
        {
            new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs
            {
                Principals = new[]
                {
                    new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs
                    {
                        Identifiers = new[]
                        {
                            "dms.amazonaws.com",
                        },
                        Type = "Service",
                    },
                },
                Actions = new[]
                {
                    "sts:AssumeRole",
                },
            },
        },
    });

    var dms_access_for_endpoint = new Aws.Iam.Role("dms-access-for-endpoint", new()
    {
        AssumeRolePolicy = dmsAssumeRole.Apply(getPolicyDocumentResult => getPolicyDocumentResult.Json),
        Name = "dms-access-for-endpoint",
    });

    var dms_access_for_endpoint_AmazonDMSRedshiftS3Role = new Aws.Iam.RolePolicyAttachment("dms-access-for-endpoint-AmazonDMSRedshiftS3Role", new()
    {
        PolicyArn = "arn:aws:iam::aws:policy/service-role/AmazonDMSRedshiftS3Role",
        Role = dms_access_for_endpoint.Name,
    });

    var dms_cloudwatch_logs_role = new Aws.Iam.Role("dms-cloudwatch-logs-role", new()
    {
        AssumeRolePolicy = dmsAssumeRole.Apply(getPolicyDocumentResult => getPolicyDocumentResult.Json),
        Name = "dms-cloudwatch-logs-role",
    });

    var dms_cloudwatch_logs_role_AmazonDMSCloudWatchLogsRole = new Aws.Iam.RolePolicyAttachment("dms-cloudwatch-logs-role-AmazonDMSCloudWatchLogsRole", new()
    {
        PolicyArn = "arn:aws:iam::aws:policy/service-role/AmazonDMSCloudWatchLogsRole",
        Role = dms_cloudwatch_logs_role.Name,
    });

    var dms_vpc_role = new Aws.Iam.Role("dms-vpc-role", new()
    {
        AssumeRolePolicy = dmsAssumeRole.Apply(getPolicyDocumentResult => getPolicyDocumentResult.Json),
        Name = "dms-vpc-role",
    });

    var dms_vpc_role_AmazonDMSVPCManagementRole = new Aws.Iam.RolePolicyAttachment("dms-vpc-role-AmazonDMSVPCManagementRole", new()
    {
        PolicyArn = "arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole",
        Role = dms_vpc_role.Name,
    });

    // Create a new replication instance
    var test = new Aws.Dms.ReplicationInstance("test", new()
    {
        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 =
        {
            { "Name", "test" },
        },
        VpcSecurityGroupIds = new[]
        {
            "sg-12345678",
        },
    }, new CustomResourceOptions
    {
        DependsOn =
        {
            dms_access_for_endpoint_AmazonDMSRedshiftS3Role,
            dms_cloudwatch_logs_role_AmazonDMSCloudWatchLogsRole,
            dms_vpc_role_AmazonDMSVPCManagementRole,
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/dms"
	"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		// 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
		dmsAssumeRole, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{
			Statements: []iam.GetPolicyDocumentStatement{
				{
					Principals: []iam.GetPolicyDocumentStatementPrincipal{
						{
							Identifiers: []string{
								"dms.amazonaws.com",
							},
							Type: "Service",
						},
					},
					Actions: []string{
						"sts:AssumeRole",
					},
				},
			},
		}, nil)
		if err != nil {
			return err
		}
		dms_access_for_endpoint, err := iam.NewRole(ctx, "dms-access-for-endpoint", &iam.RoleArgs{
			AssumeRolePolicy: pulumi.String(dmsAssumeRole.Json),
			Name:             pulumi.String("dms-access-for-endpoint"),
		})
		if err != nil {
			return err
		}
		dms_access_for_endpoint_AmazonDMSRedshiftS3Role, err := iam.NewRolePolicyAttachment(ctx, "dms-access-for-endpoint-AmazonDMSRedshiftS3Role", &iam.RolePolicyAttachmentArgs{
			PolicyArn: pulumi.String("arn:aws:iam::aws:policy/service-role/AmazonDMSRedshiftS3Role"),
			Role:      dms_access_for_endpoint.Name,
		})
		if err != nil {
			return err
		}
		dms_cloudwatch_logs_role, err := iam.NewRole(ctx, "dms-cloudwatch-logs-role", &iam.RoleArgs{
			AssumeRolePolicy: pulumi.String(dmsAssumeRole.Json),
			Name:             pulumi.String("dms-cloudwatch-logs-role"),
		})
		if err != nil {
			return err
		}
		dms_cloudwatch_logs_role_AmazonDMSCloudWatchLogsRole, err := iam.NewRolePolicyAttachment(ctx, "dms-cloudwatch-logs-role-AmazonDMSCloudWatchLogsRole", &iam.RolePolicyAttachmentArgs{
			PolicyArn: pulumi.String("arn:aws:iam::aws:policy/service-role/AmazonDMSCloudWatchLogsRole"),
			Role:      dms_cloudwatch_logs_role.Name,
		})
		if err != nil {
			return err
		}
		dms_vpc_role, err := iam.NewRole(ctx, "dms-vpc-role", &iam.RoleArgs{
			AssumeRolePolicy: pulumi.String(dmsAssumeRole.Json),
			Name:             pulumi.String("dms-vpc-role"),
		})
		if err != nil {
			return err
		}
		dms_vpc_role_AmazonDMSVPCManagementRole, err := iam.NewRolePolicyAttachment(ctx, "dms-vpc-role-AmazonDMSVPCManagementRole", &iam.RolePolicyAttachmentArgs{
			PolicyArn: pulumi.String("arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole"),
			Role:      dms_vpc_role.Name,
		})
		if err != nil {
			return err
		}
		// Create a new replication instance
		_, err = dms.NewReplicationInstance(ctx, "test", &dms.ReplicationInstanceArgs{
			AllocatedStorage:           pulumi.Int(20),
			ApplyImmediately:           pulumi.Bool(true),
			AutoMinorVersionUpgrade:    pulumi.Bool(true),
			AvailabilityZone:           pulumi.String("us-west-2c"),
			EngineVersion:              pulumi.String("3.1.4"),
			KmsKeyArn:                  pulumi.String("arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012"),
			MultiAz:                    pulumi.Bool(false),
			PreferredMaintenanceWindow: pulumi.String("sun:10:30-sun:14:30"),
			PubliclyAccessible:         pulumi.Bool(true),
			ReplicationInstanceClass:   pulumi.String("dms.t3.micro"),
			ReplicationInstanceId:      pulumi.String("test-dms-replication-instance-tf"),
			ReplicationSubnetGroupId:   pulumi.Any(test_dms_replication_subnet_group_tf.Id),
			Tags: pulumi.StringMap{
				"Name": pulumi.String("test"),
			},
			VpcSecurityGroupIds: pulumi.StringArray{
				pulumi.String("sg-12345678"),
			},
		}, pulumi.DependsOn([]pulumi.Resource{
			dms_access_for_endpoint_AmazonDMSRedshiftS3Role,
			dms_cloudwatch_logs_role_AmazonDMSCloudWatchLogsRole,
			dms_vpc_role_AmazonDMSVPCManagementRole,
		}))
		if err != nil {
			return err
		}
		return nil
	})
}
pulumi {
  required_providers {
    aws = {
      source = "pulumi/aws"
    }
  }
}

data "aws_iam_getpolicydocument" "dmsAssumeRole" {
  statements {
    principals {
      identifiers = ["dms.amazonaws.com"]
      type        = "Service"
    }
    actions = ["sts:AssumeRole"]
  }
}

resource "aws_iam_role" "dms-access-for-endpoint" {
  assume_role_policy = data.aws_iam_getpolicydocument.dmsAssumeRole.json
  name               = "dms-access-for-endpoint"
}
resource "aws_iam_rolepolicyattachment" "dms-access-for-endpoint-AmazonDMSRedshiftS3Role" {
  policy_arn = "arn:aws:iam::aws:policy/service-role/AmazonDMSRedshiftS3Role"
  role       = aws_iam_role.dms-access-for-endpoint.name
}
resource "aws_iam_role" "dms-cloudwatch-logs-role" {
  assume_role_policy = data.aws_iam_getpolicydocument.dmsAssumeRole.json
  name               = "dms-cloudwatch-logs-role"
}
resource "aws_iam_rolepolicyattachment" "dms-cloudwatch-logs-role-AmazonDMSCloudWatchLogsRole" {
  policy_arn = "arn:aws:iam::aws:policy/service-role/AmazonDMSCloudWatchLogsRole"
  role       = aws_iam_role.dms-cloudwatch-logs-role.name
}
resource "aws_iam_role" "dms-vpc-role" {
  assume_role_policy = data.aws_iam_getpolicydocument.dmsAssumeRole.json
  name               = "dms-vpc-role"
}
resource "aws_iam_rolepolicyattachment" "dms-vpc-role-AmazonDMSVPCManagementRole" {
  policy_arn = "arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole"
  role       = aws_iam_role.dms-vpc-role.name
}
# Create a new replication instance
resource "aws_dms_replicationinstance" "test" {
  depends_on                   = [aws_iam_rolepolicyattachment.dms-access-for-endpoint-AmazonDMSRedshiftS3Role, aws_iam_rolepolicyattachment.dms-cloudwatch-logs-role-AmazonDMSCloudWatchLogsRole, aws_iam_rolepolicyattachment.dms-vpc-role-AmazonDMSVPCManagementRole]
  allocated_storage            = 20
  apply_immediately            = true
  auto_minor_version_upgrade   = true
  availability_zone            = "us-west-2c"
  engine_version               = "3.1.4"
  kms_key_arn                  = "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012"
  multi_az                     = false
  preferred_maintenance_window = "sun:10:30-sun:14:30"
  publicly_accessible          = true
  replication_instance_class   = "dms.t3.micro"
  replication_instance_id      = "test-dms-replication-instance-tf"
  replication_subnet_group_id  = test-dms-replication-subnet-group-tf.id
  tags = {
    "Name" = "test"
  }
  vpc_security_group_ids = ["sg-12345678"]
}
# 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
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());

    }
}
resources:
  dms-access-for-endpoint:
    type: aws:iam:Role
    properties:
      assumeRolePolicy: ${dmsAssumeRole.json}
      name: dms-access-for-endpoint
  dms-access-for-endpoint-AmazonDMSRedshiftS3Role:
    type: aws:iam:RolePolicyAttachment
    properties:
      policyArn: arn:aws:iam::aws:policy/service-role/AmazonDMSRedshiftS3Role
      role: ${["dms-access-for-endpoint"].name}
  dms-cloudwatch-logs-role:
    type: aws:iam:Role
    properties:
      assumeRolePolicy: ${dmsAssumeRole.json}
      name: dms-cloudwatch-logs-role
  dms-cloudwatch-logs-role-AmazonDMSCloudWatchLogsRole:
    type: aws:iam:RolePolicyAttachment
    properties:
      policyArn: arn:aws:iam::aws:policy/service-role/AmazonDMSCloudWatchLogsRole
      role: ${["dms-cloudwatch-logs-role"].name}
  dms-vpc-role:
    type: aws:iam:Role
    properties:
      assumeRolePolicy: ${dmsAssumeRole.json}
      name: dms-vpc-role
  dms-vpc-role-AmazonDMSVPCManagementRole:
    type: aws:iam:RolePolicyAttachment
    properties:
      policyArn: arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole
      role: ${["dms-vpc-role"].name}
  # Create a new replication instance
  test:
    type: aws:dms:ReplicationInstance
    properties:
      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:
        Name: test
      vpcSecurityGroupIds:
        - sg-12345678
    options:
      dependsOn:
        - ${["dms-access-for-endpoint-AmazonDMSRedshiftS3Role"]}
        - ${["dms-cloudwatch-logs-role-AmazonDMSCloudWatchLogsRole"]}
        - ${["dms-vpc-role-AmazonDMSVPCManagementRole"]}
variables:
  # 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
  dmsAssumeRole:
    fn::invoke:
      function: aws:iam:getPolicyDocument
      arguments:
        statements:
          - principals:
              - identifiers:
                  - dms.amazonaws.com
                type: Service
            actions:
              - sts:AssumeRole

Import

Using pulumi import, import replication instances using the replicationInstanceId. For example:

$ pulumi import aws:dms/replicationInstance:ReplicationInstance test test-dms-replication-instance-tf

Constructors

ReplicationInstance(String name, {ReplicationInstanceArgs? args, CustomResourceOptions? options})
Creates a new ReplicationInstance. name The Pulumi resource name. args Arguments used to configure this ReplicationInstance. The set of arguments for ReplicationInstance. options Resource options controlling this resource's behavior.
ReplicationInstance.reference(String urn)
Creates a typed reference to an existing ReplicationInstance resource.

Properties

allocatedStorage ↔ Output<int>
The amount of storage (in gigabytes) to be initially allocated for the replication instance.
latefinal
allowMajorVersionUpgrade ↔ Output<bool?>
Indicates that major version upgrades are allowed.
latefinal
applyImmediately ↔ Output<bool?>
Indicates whether the changes should be applied immediately or during the next maintenance window. Only used when updating an existing resource.
latefinal
autoMinorVersionUpgrade ↔ Output<bool>
Indicates that minor engine upgrades will be applied automatically to the replication instance during the maintenance window.
latefinal
availabilityZone ↔ Output<String>
The EC2 Availability Zone that the replication instance will be created in.
latefinal
childResources Set<Resource>
finalinherited
completionSources Map<String, IOutputCompletionSource>
latefinalinherited
dnsNameServers ↔ Output<String?>
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.
latefinal
engineVersion ↔ Output<String>
The engine version number of the replication instance.
latefinal
hashCode int
The hash code for this object.
no setterinherited
id ↔ Output<String>
getter/setter pairinherited
isCustom bool
Returns whether this resource is provider-managed.
no setterinherited
isProtected bool
Returns whether this resource is protected from deletion.
no setterinherited
isRemote bool
Whether this resource is registered as remote.
no setterinherited
isResourceReference bool
Whether this instance represents a resource value returned over RPC.
finalinherited
kerberosAuthenticationSettings ↔ Output<ReplicationInstanceKerberosAuthenticationSettings?>
Configuration block for settings required for Kerberos authentication. See below.
latefinal
kmsKeyArn ↔ Output<String>
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.
latefinal
multiAz ↔ Output<bool>
Specifies if the replication instance is a multi-az deployment. You cannot set the availabilityZone parameter if the multiAz parameter is set to true.
latefinal
networkType ↔ Output<String>
The type of IP address protocol used by a replication instance. Valid values: IPV4, DUAL.
latefinal
preferredMaintenanceWindow ↔ Output<String>
The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).
latefinal
publiclyAccessible ↔ Output<bool>
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.
latefinal
region ↔ Output<String>
Region where this resource will be managed. Defaults to the Region set in the provider configuration.
latefinal
replicationInstanceArn ↔ Output<String>
ARN of the replication instance.
latefinal
replicationInstanceClass ↔ Output<String>
The compute and memory capacity of the replication instance as specified by the replication instance class. See AWS DMS User Guide for available instance sizes and advice on which one to choose.
latefinal
replicationInstanceId ↔ Output<String>
The replication instance identifier. This parameter is stored as a lowercase string.
latefinal
replicationInstancePrivateIps ↔ Output<List<String>>
A list of the private IP addresses of the replication instance.
latefinal
replicationInstancePublicIps ↔ Output<List<String>>
A list of the public IP addresses of the replication instance.
latefinal
replicationSubnetGroupId ↔ Output<String>
A subnet group to associate with the replication instance.
latefinal
resourceTransforms List<ResourceTransform>
Inherited/explicit async transforms.
no setterinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
tags ↔ Output<Map<String, String>?>
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.
latefinal
tagsAll ↔ Output<Map<String, String>>
A map of tags assigned to the resource, including those inherited from the provider defaultTags configuration block.
latefinal
transformations List<ResourceTransformation>
Inherited/explicit legacy transformations.
no setterinherited
urn ↔ Output<String>
latefinalinherited
vpcSecurityGroupIds ↔ Output<List<String>>
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.
latefinal

Methods

failId(Object error) → void
Completes this resource ID with an error when registration fails.
inherited
failOutputs(Object error) → void
Completes all output properties with error.
inherited
failUrn(Object error) → void
Completes this resource URN with an error when registration fails.
inherited
getProvider(String moduleMember) → ProviderResource?
Returns provider for moduleMember's package, if configured.
inherited
getResourceName() String
Returns this resource's logical name.
inherited
getResourceType() String
Returns this resource's Pulumi type token.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
registerOutput<T>(String propertyName, {Object? decoder(Object?)?, bool isSecret = false}) → Output<T>
Registers a dynamic output property for this resource.
inherited
resolveId(String? value, {required bool isKnown}) → void
Resolves the provider-assigned ID for this resource.
inherited
resolveOutputs(Struct outputs) → void
Resolves all output properties from a monitor response payload.
inherited
resolveUrn(String value) → void
Resolves this resource's URN once assigned by the engine.
inherited
serializeProperties(Map<String, dynamic> properties) Future<Struct>
Serializes resource properties for RPC transmission.
inherited
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited

Static Methods

get(String name, Input<String> id, {ReplicationInstanceState? state, CustomResourceOptions? options}) ReplicationInstance
Gets an existing ReplicationInstance resource's state with the given name and id.