You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何下载AWS Postgres数据库的S3快照本地副本?遇权限等问题求助

问题分析与解决方案

1. 关于HeadObject 404错误

你执行的第一个命令aws s3 cp s3://<your-bucket-name>/<your-snapshot-name> <local-path>报错404,原因是该命令默认复制单个对象,而<your-snapshot-name>是一个前缀(目录)而非单个文件对象,S3中不存在名为<your-snapshot-name>的单个对象,因此触发404。使用--recursive参数是正确的选择,但后续遇到的权限问题才是核心障碍。

2. 核心问题:KMS解密权限缺失

递归复制时返回的AccessDenied错误明确指向客户主密钥(CMK)权限问题:你的IAM身份(用户/角色)没有对加密该快照对象的KMS密钥的解密权限。即使拥有S3全访问权限,若对象通过KMS加密,必须同时具备KMS的Decrypt权限才能下载对象。

解决步骤:

(1)确认加密密钥信息

在AWS控制台进入S3桶,找到快照下任意一个.gz.parquet文件,查看其属性中的加密配置:

  • 如果是AWS托管的S3密钥,ARN格式为arn:aws:kms:<region>:<account-id>:key/aws/s3
  • 如果是客户托管CMK,会显示该密钥的具体ARN

(2)添加KMS权限策略

给你的IAM用户/角色附加以下权限策略(替换占位符为实际信息):

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "kms:Decrypt",
            "Resource": "arn:aws:kms:<your-region>:<your-account-id>:key/<your-cmk-id>"
        }
    ]
}
  • 若CMK属于其他AWS账户,还需要登录该账户,在CMK的密钥策略中添加允许你的账户执行kms:Decrypt的语句。

(3)验证区域一致性

确保你的AWS CLI配置的区域与S3桶、CMK所在区域一致:

  • 查看当前CLI区域:aws configure get region
  • 若区域不匹配,执行aws configure set region <correct-region>,或在复制命令中添加--region <correct-region>参数。

3. 额外验证

执行以下命令确认快照路径下存在对象:

aws s3 ls s3://<your-bucket-name>/<your-snapshot-name>/ --recursive

若能列出所有.gz.parquet文件,说明路径正确,只需补充KMS权限即可完成递归复制。

内容的提问来源于stack exchange,提问作者benmneb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 19:01:27