diff --git a/.changelog/32551.txt b/.changelog/32551.txt new file mode 100644 index 00000000000..b1b8f6c7245 --- /dev/null +++ b/.changelog/32551.txt @@ -0,0 +1,3 @@ +```release-note:bug +data-source/aws_dms_replication_instance: Fixed bug that caused `replication_instance_private_ips`, `replication_instance_public_ips`, and `vpc_security_group_ids` to always return `null` +``` diff --git a/internal/service/dms/replication_instance_data_source.go b/internal/service/dms/replication_instance_data_source.go index 47519c7b512..7f4ac346dd7 100644 --- a/internal/service/dms/replication_instance_data_source.go +++ b/internal/service/dms/replication_instance_data_source.go @@ -27,14 +27,6 @@ func DataSourceReplicationInstance() *schema.Resource { Type: schema.TypeInt, Computed: true, }, - "allow_major_version_upgrade": { - Type: schema.TypeBool, - Computed: true, - }, - "apply_immediately": { - Type: schema.TypeBool, - Computed: true, - }, "auto_minor_version_upgrade": { Type: schema.TypeBool, Computed: true, @@ -130,6 +122,25 @@ func dataSourceReplicationInstanceRead(ctx context.Context, d *schema.ResourceDa d.Set("replication_instance_class", instance.ReplicationInstanceClass) d.Set("replication_instance_id", instance.ReplicationInstanceIdentifier) + if err := d.Set("replication_instance_private_ips", aws.StringValueSlice(instance.ReplicationInstancePrivateIpAddresses)); err != nil { + return create.DiagError(names.DMS, create.ErrActionReading, DSNameReplicationTask, d.Id(), err) + } + + if err := d.Set("replication_instance_public_ips", aws.StringValueSlice(instance.ReplicationInstancePublicIpAddresses)); err != nil { + return create.DiagError(names.DMS, create.ErrActionReading, DSNameReplicationTask, d.Id(), err) + } + + d.Set("replication_subnet_group_id", instance.ReplicationSubnetGroup.ReplicationSubnetGroupIdentifier) + + vpc_security_group_ids := []string{} + for _, sg := range instance.VpcSecurityGroups { + vpc_security_group_ids = append(vpc_security_group_ids, aws.StringValue(sg.VpcSecurityGroupId)) + } + + if err := d.Set("vpc_security_group_ids", vpc_security_group_ids); err != nil { + return create.DiagError(names.DMS, create.ErrActionReading, DSNameReplicationTask, d.Id(), err) + } + tags, err := listTags(ctx, conn, aws.StringValue(instance.ReplicationInstanceArn)) if err != nil { diff --git a/internal/service/dms/replication_instance_data_source_test.go b/internal/service/dms/replication_instance_data_source_test.go index 96d7578e98c..7e6f0685c45 100644 --- a/internal/service/dms/replication_instance_data_source_test.go +++ b/internal/service/dms/replication_instance_data_source_test.go @@ -31,6 +31,10 @@ func TestAccDMSReplicationInstanceDataSource_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckReplicationInstanceExists(ctx, dataSourceName), resource.TestCheckResourceAttrPair(dataSourceName, "replication_instance_id", resourceName, "replication_instance_id"), + resource.TestCheckResourceAttrPair(dataSourceName, "replication_instance_arn", resourceName, "replication_instance_arn"), + resource.TestCheckResourceAttrPair(dataSourceName, "replication_instance_class", resourceName, "replication_instance_class"), + resource.TestCheckResourceAttrPair(dataSourceName, "replication_instance_private_ips.#", resourceName, "replication_instance_private_ips.#"), + resource.TestCheckResourceAttrPair(dataSourceName, "replication_instance_public_ips.#", resourceName, "replication_instance_public_ips.#"), ), }, }, diff --git a/website/docs/d/dms_replication_instance.html.markdown b/website/docs/d/dms_replication_instance.html.markdown index 892f3fd9eed..8c917a62031 100644 --- a/website/docs/d/dms_replication_instance.html.markdown +++ b/website/docs/d/dms_replication_instance.html.markdown @@ -1,7 +1,7 @@ --- subcategory: "DMS (Database Migration)" layout: "aws" -page_title: "AWS: aws_dms_certificate" +page_title: "AWS: aws_dms_replication_instance" description: |- Terraform data source for managing an AWS DMS (Database Migration) Replication Instance. --- @@ -22,36 +22,23 @@ data "aws_dms_replication_instance" "test" { The following arguments are required: -* `replication_instance_id` - (Required) The replication instance identifier. This parameter is stored as a lowercase string. - - - Must contain from 1 to 63 alphanumeric characters or hyphens. - - First character must be a letter. - - Cannot end with a hyphen - - Cannot contain two consecutive hyphens. +* `replication_instance_id` - (Required) The replication instance identifier. ## Attributes Reference In addition to all arguments above, the following attributes are exported: -* `allocated_storage` - (Default: 50, Min: 5, Max: 6144) The amount of storage (in gigabytes) to be initially allocated for the replication instance. -* `allow_major_version_upgrade` - (Default: false) Indicates that major version upgrades are allowed. -* `apply_immediately` - (Default: false) Indicates whether the changes should be applied immediately or during the next maintenance window. Only used when updating an existing resource. -* `auto_minor_version_upgrade` - (Default: false) Indicates that minor engine upgrades will be applied automatically to the replication instance during the maintenance window. +* `allocated_storage` - The amount of storage (in gigabytes) to be initially allocated for the replication instance. +* `auto_minor_version_upgrade` - Indicates that minor engine upgrades will be applied automatically to the replication instance during the maintenance window. * `availability_zone` - The EC2 Availability Zone that the replication instance will be created in. * `engine_version` - The engine version number of the replication instance. -* `kms_key_arn` - The Amazon Resource Name (ARN) for the KMS key that will be used to encrypt the connection parameters. If you do not specify a value for `kms_key_arn`, 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. -* `multi_az` - Specifies if the replication instance is a multi-az deployment. You cannot set the `availability_zone` parameter if the `multi_az` parameter is set to `true`. +* `kms_key_arn` - The Amazon Resource Name (ARN) for the KMS key used to encrypt the connection parameters. +* `multi_az` - Specifies if the replication instance is a multi-az deployment. * `preferred_maintenance_window` - The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC). - - - Default: A 30-minute window selected at random from an 8-hour block of time per region, occurring on a random day of the week. - - Format: `ddd:hh24:mi-ddd:hh24:mi` - - Valid Days: `mon, tue, wed, thu, fri, sat, sun` - - Constraints: Minimum 30-minute window. - -* `publicly_accessible` - (Default: false) 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. +* `publicly_accessible` - 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. * `replication_instance_arn` - The Amazon Resource Name (ARN) of the replication instance. -* `replication_instance_class` - 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. +* `replication_instance_class` - 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 information on instance classes. * `replication_instance_private_ips` - A list of the private IP addresses of the replication instance. * `replication_instance_public_ips` - A list of the public IP addresses of the replication instance. -* `replication_subnet_group_id` - (Optional) A subnet group to associate with the replication instance. -* `vpc_security_group_ids` - (Optional) 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. +* `replication_subnet_group_id` - A subnet group to associate with the replication instance. +* `vpc_security_group_ids` - A set of VPC security group IDs that are used with the replication instance.