
terraform-aws-arc-dms¶
Module:
sourcefuse/arc-dms/awsRegistry: https://registry.terraform.io/modules/sourcefuse/arc-dms/aws
Category: Database / Migration
Tip
🤖 New: Use this module with AI assistants via the ARC IaC MCP Server — search, scaffold, and security-scan ARC modules from natural language. Quick setup ↓
Overview¶
Architecture¶

Creates AWS Database Migration Service resources — replication instances, endpoints, and tasks — for homogeneous and heterogeneous database migrations.
What It Does¶
- DMS replication instance with configurable class and storage
- Source and target endpoints with Secrets Manager auth
- Full-load, CDC, and full-load-and-CDC migration tasks
- Subnet group and VPC security group configuration
- Support for PostgreSQL, MySQL, Oracle, SQL Server, and more
For more information about this repository and its usage, please see Terraform AWS DMS Usage Guide.
Quickstart¶
To see a DMS example, check out the main.tf file in the example folder.
Required Inputs¶
| Name | Version |
|---|---|
| terraform | >= 1.4, < 2.0.0 |
| aws | >= 4.0, < 6.0 |
Providers¶
No providers.
Modules¶
| Name | Source | Version |
|---|---|---|
| aws_dms | ./modules/dms | n/a |
Resources¶
No resources.
Inputs¶
| Name | Description | Type | Default | Required |
|---|---|---|---|---|
| create_subnet_group | Determines whether the replication subnet group will be created | bool |
true |
no |
| endpoints | Map of endpoints used in the system | map(object({ |
n/a | yes |
| instance_allocated_storage | The amount of storage (in gigabytes) to be initially allocated for the replication instance. Min: 5, Max: 6144, Default: 50 | number |
null |
no |
| instance_allow_major_version_upgrade | Indicates that major version upgrades are allowed | bool |
true |
no |
| instance_apply_immediately | Indicates whether the changes should be applied immediately or during the next maintenance window | bool |
null |
no |
| instance_auto_minor_version_upgrade | Indicates that minor engine upgrades will be applied automatically to the replication instance during the maintenance window | bool |
true |
no |
| instance_availability_zone | The EC2 Availability Zone that the replication instance will be created in | string |
null |
no |
| instance_class | The compute and memory capacity of the replication instance as specified by the replication instance class | string |
"dms.t2.micro" |
no |
| instance_engine_version | The engine version number of the replication instance | string |
null |
no |
| instance_id | The replication instance identifier. This parameter is stored as a lowercase string | string |
"dms-instance" |
no |
| instance_kms_key_arn | The Amazon Resource Name (ARN) for the KMS key that will be used to encrypt the connection parameters | string |
null |
no |
| instance_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 |
bool |
null |
no |
| instance_network_type | The type of IP address protocol used by a replication instance. Valid values: IPV4, DUAL | string |
null |
no |
| instance_preferred_maintenance_window | The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC) | string |
null |
no |
| instance_publicly_accessible | Specifies the accessibility options for the replication instance | bool |
null |
no |
| instance_subnet_group_id | An existing subnet group to associate with the replication instance | string |
null |
no |
| instance_vpc_security_group_ids | A list of VPC security group IDs to be used with the replication instance | list(string) |
null |
no |
| replication_tasks | n/a | map(object({ |
{} |
no |
| replication_tasks_serverless | Map of serverless replication tasks | map(object({ |
n/a | yes |
| s3_endpoints | n/a | map(object({ |
n/a | yes |
| subnet_group_description | The description for the subnet group | string |
"DMS Replication subnet group" |
no |
| subnet_group_id | The name for the replication subnet group. Stored as a lowercase string, must contain no more than 255 alphanumeric characters, periods, spaces, underscores, or hyphens | string |
"DMS_replication_subnet_group" |
no |
| subnet_group_subnet_ids | A list of the EC2 subnet IDs for the subnet group | list(string) |
[] |
no |
| subnet_group_tags | A map of additional tags to apply to the replication subnet group | map(string) |
{} |
no |
| ## Key Outputs |
| Name | Description |
|---|---|
| certificates | A map of maps containing the certificates created and their full output of attributes and values |
| dms_access_for_endpoint_iam_role_arn | ARN specifying the role |
| dms_access_for_endpoint_iam_role_id | Name of the IAM role |
| dms_access_for_endpoint_iam_role_unique_id | Stable and unique string identifying the role |
| endpoints | A map of maps containing the endpoints created and their full output of attributes and values |
| event_subscriptions | A map of maps containing the event subscriptions created and their full output of attributes and values |
| replication_instance_arn | The Amazon Resource Name (ARN) of the replication instance |
| replication_instance_tags_all | A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block |
| replication_subnet_group_id | The ID of the subnet group |
| replication_tasks | A map of maps containing the replication tasks created and their full output of attributes and values |
| s3_endpoints | A map of maps containing the S3 endpoints created and their full output of attributes and values |
| serverless_replication_tasks | A map of maps containing the serverless replication tasks (replication_config) created and their full output of attributes and values |
Versioning¶
while Contributing or doing git commit please specify the breaking change in your commit message whether its major,minor or patch
For Example
Development¶
Prerequisites¶
Configurations¶
- Configure pre-commit hooks
Tests¶
- Tests are available in
testdirectory - Configure the dependencies
- Now execute the test
AI Assistant Integration (ARC IaC MCP)¶
The ARC IaC MCP Server is a hosted Model Context Protocol service that lets AI assistants browse, search, scaffold, compare, and security-scan any of the SourceFuse ARC Terraform modules — directly from natural language.
What you can do with it:
- Discover — search and filter modules by keyword or AWS resource type.
- Understand — get inputs, outputs, and resources for any module without leaving your editor.
- Scaffold — generate production-ready, multi-file Terraform with cross-module wiring already done.
- Secure — scan generated or existing HCL for misconfigurations before it hits a PR.
- Compare — diff modules side-by-side to make informed architectural decisions.
Setup (one minute)¶
The MCP endpoint is https://arc-iac-mcp.sourcef.us/mcp. Pick your client:
Claude Code CLI:
Claude Desktop — edit ~/Library/Application Support/Claude/claude_desktop_config.json:
Cursor / Windsurf / Kiro — add the same block to .cursor/mcp.json (or the equivalent for your client).
Example prompts to try¶
- "List all ARC modules sorted by downloads"
- "What inputs does
arc-ecsrequire?" - "Scaffold a production-ready
arc-dbAurora setup with Secrets Manager" - "Compare
arc-eksandarc-ecsfor running 10 microservices" - "Scan this Terraform before I raise a PR:
<paste HCL>"
See the ARC IaC MCP repo for the full tool reference, troubleshooting tips, and local-development instructions.
Contributing¶
See CONTRIBUTING.md for commit conventions and development setup.
Authors¶
This project is authored by: - SourceFuse ARC Team