如何在自有AWS DMS中使用其他AWS账户的S3桶作为源端点?
Hey Gerrit, 我来一步步帮你搞定跨账户S3桶作为AWS DMS源端点的操作——其实核心就是把权限配置到位,再正确设置DMS端点,咱们一步步来:
第一步:确认目标S3桶的权限配置(关键!)
虽然你已经拿到了对方账户的Access Key和Secret,但得确保这个凭证对应的IAM实体能被目标S3桶允许访问:
- 登录拥有该S3桶的AWS账户,打开S3控制台找到目标桶
- 切换到「权限」标签页,编辑「桶策略」,添加一段允许你凭证访问的策略(替换掉示例里的占位符):
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::对方账户ID:user/你的凭证对应的IAM用户名" }, "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::你的目标桶名称", "arn:aws:s3:::你的目标桶名称/*" ] } ] }
- 同时要确认对方给你的Access Key对应的IAM用户本身至少拥有
s3:GetObject和s3:ListBucket权限(可以直接附加AmazonS3ReadOnlyAccess托管策略,或者更精细的自定义策略),避免权限冲突。
第二步:在你的AWS账户中创建DMS源端点
接下来回到你自己的AWS账户,配置DMS的源端点:
- 打开DMS控制台,进入「端点」页面,点击「创建端点」
- 「端点类型」选「源端点」,「源引擎」选择「Amazon S3」
- 填写S3核心配置:
- 「S3桶名称」:输入对方账户的S3桶全名(比如
my-cross-account-data-bucket) - 「S3桶区域」:选择该桶所在的AWS区域(必须和桶实际区域一致)
- 「访问密钥ID」:填入你拿到的Access Key
- 「秘密访问密钥」:填入对应的Secret Key
- 「S3桶名称」:输入对方账户的S3桶全名(比如
- 配置「额外连接属性」,这里要根据你S3里的数据格式来填,比如CSV格式的话可以用:
compressionType=NONE;csvDelimiter=,;csvRowDelimiter=\n;csvHeaderRowPresent=true;bucketFolder=your-data-folder(可选,填桶内数据所在文件夹)
- 给端点起个好记的「端点标识符」,比如
cross-account-s3-source - 点击「测试连接」,如果显示成功就没问题;失败的话优先检查桶策略、凭证正确性或者网络权限。
第三步:创建并启动DMS迁移任务
最后就是配置迁移任务了:
- 回到DMS控制台的「迁移任务」页面,点击「创建任务」
- 填写任务基本信息(名称、描述等)
- 「源端点」选择你刚创建的跨账户S3端点,「目标端点」选择你要迁移到的数据库端点(比如RDS、Redshift,得提前创建好)
- 「迁移类型」根据需求选:只迁移现有数据、持续复制(CDC),或者两者都做
- 在「任务设置」里可以调整表映射、数据转换规则等(比如字段映射、格式转换)
- 全部配置完后点击「创建任务」,等待任务启动执行即可。
几个要注意的细节
- 你的DMS复制实例得能访问跨账户S3桶:如果复制实例在VPC里,要么配置S3网关端点,要么确保VPC有互联网访问权限(通过NAT网关),不然连不上S3。
- S3里的数据格式要符合DMS要求:比如CSV文件最好有表头(或者在连接属性里指定
csvHeaderRowPresent=true),编码用UTF-8避免乱码。 - 要是遇到权限报错,优先用AWS IAM Access Analyzer检查桶策略,或者查看S3访问日志定位问题。
内容的提问来源于stack exchange,提问作者Gerrit
相关产品推荐
相关产品推荐

