AWS
By integrating AWS with DX, you can securely import read-only metadata from your AWS account. This gives read access to services such as EC2, RDS, Lambda, S3, EKS, ElastiCache, VPC, security groups, IAM roles, SQS, SNS, and DynamoDB.
Prerequisites
To connect AWS to DX, you need:
- Access to AWS IAM to create a Policy and Role
Setup instructions
IAM role assumption is the AWS-recommended approach for cross-account access. It uses temporary credentials and supports connecting multiple AWS accounts through a single DX connection.
Step 1 - Get your External ID from DX
- In DX, navigate to Settings > Data connectors > Add connector > AWS
- Copy the External ID displayed - you’ll need this for the trust policy
Step 2 - Create a read-only IAM policy
In your AWS account, create a custom IAM policy with the required read permissions:
- Go to IAM > Policies > Create policy
- Select the JSON tab and paste the following:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DXDataCloudReadOnly",
"Effect": "Allow",
"Action": [
"ec2:DescribeInstances",
"ec2:DescribeTags",
"ec2:DescribeRegions",
"ec2:DescribeVpcs",
"ec2:DescribeSecurityGroups",
"rds:DescribeDBInstances",
"rds:ListTagsForResource",
"lambda:ListFunctions",
"lambda:ListTags",
"lambda:GetFunction",
"s3:ListAllMyBuckets",
"s3:GetBucketTagging",
"eks:ListClusters",
"eks:DescribeCluster",
"elasticache:DescribeCacheClusters",
"elasticache:ListTagsForResource",
"elasticache:DescribeServerlessCaches",
"iam:ListRoles",
"iam:ListRoleTags",
"sqs:ListQueues",
"sqs:GetQueueAttributes",
"sqs:ListQueueTags",
"sns:ListTopics",
"sns:GetTopicAttributes",
"sns:ListTagsForResource",
"dynamodb:ListTables",
"dynamodb:DescribeTable",
"dynamodb:ListTagsOfResource"
],
"Resource": "*"
}
]
}
- Name the policy (e.g.,
DX-Connector-Policy) and create it
Step 3 - Create an IAM role with trust policy
Create an IAM role that DX can assume:
- Go to IAM > Roles > Create role
- Select Custom trust policy and paste the following (replace the placeholder values):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::703671904508:role/dx-datacloud"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "YOUR_EXTERNAL_ID_FROM_DX"
}
}
}
]
}
- Click Next and attach the policy you created in Step 2
- Name the role (e.g.,
DX-Connector-Role) and create it - Copy the Role ARN (e.g.,
arn:aws:iam::123456789012:role/DX-Connector-Role)
Step 4 - Configure the connection in DX
Provide the following values in DX:
- Role ARN - The ARN of the IAM role you created
Connecting multiple AWS accounts
To import resources from multiple AWS accounts, repeat Steps 2-3 in each AWS account, using the same External ID from DX. Then add all Role ARNs to your DX connection.
Each AWS account needs:
- The same IAM policy with read permissions
- An IAM role with trust policy pointing to DX’s AWS account
- The same External ID in the trust policy condition
API reference
The connector uses AWS APIs via SDK with read-only actions.
| Action | Documentation |
|---|---|
sts:AssumeRole |
Link |
sts:GetCallerIdentity |
Link |
ec2:DescribeInstances |
Link |
ec2:DescribeRegions |
Link |
ec2:DescribeVpcs |
Link |
ec2:DescribeSecurityGroups |
Link |
rds:DescribeDBInstances |
Link |
rds:ListTagsForResource |
Link |
lambda:ListFunctions |
Link |
lambda:ListTags |
Link |
s3:ListAllMyBuckets |
Link |
s3:GetBucketTagging |
Link |
eks:ListClusters |
Link |
eks:DescribeCluster |
Link |
elasticache:DescribeCacheClusters |
Link |
elasticache:DescribeServerlessCaches |
Link |
iam:ListRoles |
Link |
iam:ListRoleTags |
Link |
sqs:ListQueues |
Link |
sqs:GetQueueAttributes |
Link |
sqs:ListQueueTags |
Link |
sns:ListTopics |
Link |
sns:GetTopicAttributes |
Link |
sns:ListTagsForResource |
Link |
dynamodb:ListTables |
Link |
dynamodb:DescribeTable |
Link |
dynamodb:ListTagsOfResource |
Link |
Errors
The table below lists potential error codes when adding a connection in DX.
| Error | Description |
|---|---|
invalid_credentials |
Your IAM role configuration is not valid. |
invalid_permissions |
Your IAM policy does not have the permissions required by DX. |
access_denied |
DX cannot assume the IAM role. Check the trust policy and external ID. |
missing_role_arns |
At least one IAM role ARN is required. |
invalid_role_arn |
The IAM role ARN format is invalid. Expected format: arn:aws:iam::{account-id}:role/{role-name} |