如何跨AWS账号访问RDS通过aws_s3.query_export_to_s3导出的S3文件?
跨AWS账号访问Aurora导出到S3的数据解决方案
针对你遇到的问题——Aurora通过aws_s3.query_export_to_s3导出的文件默认使用AWS托管的aws/s3 KMS密钥,无法直接授权其他账号使用该密钥,也无法在导出阶段指定自定义密钥或禁用加密——有可行的解决办法,核心思路是将导出文件复制到目标账号的S3桶并替换为目标账号可控的KMS密钥,具体步骤如下:
可行方案:跨账号复制并更换加密密钥
- 目标账号准备:
- 创建新的S3桶,配置桶策略允许源账号中执行导出/复制操作的IAM身份(如RDS服务角色、操作使用的IAM用户)具备写入权限
- 在目标账号创建自定义KMS对称密钥,配置密钥策略允许上述源账号的IAM身份拥有
kms:GenerateDataKey权限(用于复制时加密文件)
- 源账号执行复制:
使用AWS CLI或S3控制台,将源桶中的导出文件复制到目标账号的桶,同时指定目标账号的自定义KMS密钥:
aws s3 cp s3://源账号桶名/导出文件路径 s3://目标账号桶名/目标文件路径 --sse-kms-key-id arn:aws:kms:区域ID:目标账号ID:key/自定义密钥ID- 源账号执行复制:
- 目标账号访问:
目标账号的IAM用户/角色只需具备目标桶的读取权限,即可正常访问复制后的文件——因为文件使用的是目标账号自己的KMS密钥,无需跨账号授权AWS托管密钥。
- 目标账号访问:
关键说明
- AWS托管的
aws/s3密钥确实不支持跨账号授权,这是AWS的产品限制,无法绕过 - 复制过程中S3会自动完成源文件的解密(使用源账号的
aws/s3密钥)和新文件的加密(使用目标账号的自定义密钥),无需额外手动解密操作
内容的提问来源于stack exchange,提问作者dr-igor
相关产品推荐
相关产品推荐

