AWS Database Migration Service (DMS)
Protocol: AWS JSON 1.1
Signing name: dms
Floci emulates the replication subnet group lifecycle, which is what
aws_dms_replication_subnet_group needs to plan and apply. Subnets are resolved against
the emulated EC2 service, so the VPC and Availability Zones a group reports are the ones
those subnets actually have.
Supported Actions
| Action | Description |
|---|---|
CreateReplicationSubnetGroup |
Creates a replication subnet group from existing EC2 subnets. |
DescribeReplicationSubnetGroups |
Lists replication subnet groups, optionally filtered by identifier. |
DeleteReplicationSubnetGroup |
Deletes the specified replication subnet group. |
ListTagsForResource |
Lists the tags on one or more DMS resource ARNs. |
AddTagsToResource |
Merges tags into the resource, overwriting by key. |
RemoveTagsFromResource |
Removes the named tag keys from the resource. |
Behaviour
- The identifier is stored as a lowercase string, as AWS does, so a group created as
MyGroupis described and deleted asmygroup. ReplicationSubnetGroupIdentifiermust not bedefaultand is limited to 255 alphanumeric characters, periods, underscores, or hyphens.- A group must cover at least two Availability Zones. Fewer returns
ReplicationSubnetGroupDoesNotCoverEnoughAZs, as AWS does. - Subnets must exist and must all belong to one VPC. Otherwise
InvalidSubnet. SubnetGroupStatusis immediatelyComplete, every subnet reportsActive,SupportedNetworkTypesis["IPV4"], andIsReadOnlyis alwaysfalse: a read-only group is one DMS manages for a zero-ETL integration, which Floci does not emulate.DescribeReplicationSubnetGroupssupports thereplication-subnet-group-idfilter. A filter naming a group that does not exist returnsResourceNotFoundFault, which is how Terraform detects a group deleted outside its state.DescribeReplicationSubnetGroupspaginates onMaxRecordsandMarker.MaxRecordsdefaults to 100 and must be between 20 and 100; a value outside that range is rejected withInvalidParameterValueExceptionrather than clamped, as AWS does. Results are ordered by identifier andMarkeris an opaque cursor that resumes after the last item of the page, so a page stays resumable across groups created or deleted between requests.Markeris returned only when a further page exists, never on the last one.ReplicationSubnetGroupDescriptionis required, must not be blank, and must contain only printable characters. A control character such as0x01returnsInvalidParameterValueException.- A member of the wrong JSON type returns
SerializationException, as AWS does, rather than being coerced. That covers aTagsentry whoseValueis an object, a filter whoseValuesis not a list, a non-string element inResourceArnList,SubnetIdsorTagKeys, and a non-string identifier. An absent member is still a parameter error, not a serialization one. - Groups are scoped per account and Region and persist through
StorageFactory.
Tagging
Tags on CreateReplicationSubnetGroup are stored with the group, and the tagging trio
works against the group's ARN, which is
arn:aws:dms:<region>:<account>:subgrp:<identifier>. DMS does not return that ARN from
DescribeReplicationSubnetGroups, so Terraform builds it client side and Floci parses it
back the same way.
AddTagsToResourcemerges by key, so re-tagging an existing key overwrites its value.RemoveTagsFromResourceremoves the named keys and ignores keys that are not present.ListTagsForResourceaccepts eitherResourceArnorResourceArnList. Each returned tag carries itsResourceArnonly for theResourceArnListform, which is the form AWS documents it on.- Tag keys are 1 to 128 characters, values at most 256, and neither may start with
aws:ordms:. - An ARN that is unparseable, names a different DMS resource type, names another account
or Region, or names a group that does not exist returns
ResourceNotFoundFault. Tagging is not a cross-account or cross-Region operation on AWS and is not one here either. - Deleting a group deletes its tags with it.
Limitations
- Only the subnet group lifecycle is implemented. Replication instances, endpoints,
and replication tasks return
UnknownOperationException. - Tagging covers replication subnet groups only. The tagging trio is implemented, but
a
ResourceArnnaming a replication instance, endpoint, or task returnsResourceNotFoundFaultbecause Floci holds no such resource. - No
ModifyReplicationSubnetGroup. A subnet change has to be a delete and recreate.
See the AWS DMS API Reference.
Configuration
| Variable | Default | Description |
|---|---|---|
FLOCI_SERVICES_DMS_ENABLED |
true |
Enable or disable DMS |