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

解决AWS RDS Aurora向KMS加密S3桶写入时的KMS密钥无效错误

解决Aurora SELECT INTO OUTFILE S3 上传到KMS加密S3桶的权限问题

这个错误是因为Aurora使用的IAM角色没有权限访问S3桶默认加密对应的KMS密钥,或者密钥的权限策略没开放给这个角色。下面是一步步的配置方案:

1. 确认Aurora关联的IAM角色

首先得明确你的Aurora集群用来访问S3的IAM角色:

  • 如果还没创建专属角色:进入IAM控制台,创建角色时选择「AWS服务 -> RDS -> RDS - Add Role to Database」,给角色附加AmazonS3FullAccess(或者更精细的权限,比如仅允许访问目标S3桶)。
  • 如果已有角色:记下来这个角色的ARN,后面配置KMS权限要用到。

2. 给IAM角色开放KMS密钥权限

KMS密钥的默认策略不会自动允许Aurora访问,需要手动添加权限:

  • 进入KMS控制台,找到S3桶默认加密用的那个KMS密钥。
  • 切换到「密钥策略」标签,编辑策略,插入以下语句(替换占位符为你的实际信息):
{
  "Sid": "AllowAuroraToUseKMSKey",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::你的AWS账号ID:role/Aurora关联的IAM角色名"
  },
  "Action": [
    "kms:GenerateDataKey",
    "kms:Decrypt"
  ],
  "Resource": "*"
}

解释:Aurora上传文件到加密桶时,需要调用GenerateDataKey生成加密用的数据密钥,同时可能需要Decrypt来验证操作,这两个权限是必需的。

3. 确保S3桶权限允许Aurora写入

还要检查S3桶的权限策略,确保Aurora角色能往桶里写数据:

  • 进入S3控制台,找到目标桶,编辑桶策略,添加以下语句:
{
  "Sid": "AllowAuroraWriteToBucket",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::你的AWS账号ID:role/Aurora关联的IAM角色名"
  },
  "Action": [
    "s3:PutObject",
    "s3:GetObject"
  ],
  "Resource": "arn:aws:s3:::你的桶名/*"
}

4. 验证Aurora的IAM角色关联状态

最后确认角色已经正确关联到Aurora集群:

  • 进入RDS控制台,找到你的Aurora集群,切换到「连接性与安全性」标签,查看「IAM角色」部分,确保目标角色状态是ACTIVE。

完成以上配置后,重新执行你的SELECT * INTO OUTFILE S3 's3://some_bucket/object_key' FROM 你的表名;语句,应该就能成功完成上传了。

内容的提问来源于stack exchange,提问作者Joaquín Bucca

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:00:45