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

将AWS S3 CSV导入Aurora Postgres遇CURL错误28求助

Aurora PostgreSQL导入S3 CSV失败:CURL错误28,无法生成预签名URL

问题详情

已为Aurora PostgreSQL实例配置S3导入权限,但执行以下导入命令时出错:

SELECT aws_s3.table_import_from_s3 ('t1','','DELIMITER '','' CSV HEADER',aws_commons.create_s3_uri('testing','test_1.csv','us-west-2'));

错误信息:

NOTICE:  HINT: make sure your instance is able to connect with S3.
NOTICE:  CURL error code: 28 when attempting to validate pre-signed URL, 0 attempt(s) remaining
NOTICE:  HINT: make sure your instance is able to connect with S3.
ERROR:  Unable to generate pre-signed url, look at engine log for details.
CONTEXT:  SQL function "table_import_from_s3" statement 1

解决步骤

1. 排查网络连通性

  • 若Aurora部署在VPC中,必须确保VPC配置了S3网关端点(Gateway类型),或通过NAT网关/公网IP允许实例访问S3的HTTPS端口(443)。
  • 安全组规则:确认Aurora实例的安全组出站规则允许0.0.0.0/0或S3服务前缀的HTTPS流量。
  • 网络ACL:检查VPC子网的网络ACL,入站和出站规则都要允许HTTPS(443端口)的流量。
  • 测试连通性:在同VPC的EC2实例中执行curl https://s3-us-west-2.amazonaws.com,验证是否能正常访问S3端点。

2. 验证IAM角色权限

  • 确认RDS实例关联的IAM角色包含s3:GetObject权限,权限范围需覆盖目标bucket和CSV文件,示例策略:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "s3:GetObject",
          "Resource": "arn:aws:s3:::testing/test_1.csv"
        }
      ]
    }
    
  • 检查角色的信任关系,确保包含rds.amazonaws.com作为可信实体:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "rds.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    

3. 检查S3桶与对象配置

  • 确认S3桶策略未阻止RDS角色的访问,避免存在拒绝类规则优先级高于允许规则的情况。
  • 确保CSV对象的存储类别不是归档类(如Glacier、Glacier Flexible Retrieval),这类存储需要先恢复才能访问。
  • 验证对象路径是否正确:aws_commons.create_s3_uri中的bucket名、文件名、区域必须完全匹配,注意对象名区分大小写。

4. 确认RDS扩展与参数组配置

  • 执行以下命令确认aws_s3和aws_commons扩展已安装:
    CREATE EXTENSION IF NOT EXISTS aws_s3;
    CREATE EXTENSION IF NOT EXISTS aws_commons;
    
  • 检查RDS参数组的rds.allowed_extensions参数,确保包含这两个扩展名称。

5. 查看RDS引擎日志

登录AWS控制台,进入目标Aurora实例的日志&监控页面,下载或查看postgresql.log,日志中会包含预签名URL生成失败的具体原因(如权限被拒、DNS解析失败等)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 15:10:27