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

通过AWS Lambda调用Redshift Data SDK执行查询遇ECONNREFUSED错误

使用@aws-sdk/client-redshift-data调用Redshift Serverless时出现ECONNREFUSED 127.0.0.1:80错误

问题详情

调用Redshift Serverless集群执行查询时,Lambda函数返回如下错误:

Error: connect ECONNREFUSED 127.0.0.1:80
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1487:16) {
  errno: -111,
  code: 'ECONNREFUSED',
  syscall: 'connect',
  address: '127.0.0.1',
  port: 80,
  '$metadata': { attempts: 1, totalRetryDelay: 0 }
}

Lambda代码片段:

const client = new RedshiftData({
    region: process.env.AWS_REGION,
    endpoint: process.env.REDSHIFT_HOST
})

try {
    console.log('Send executeStatementCommand...')
    let queryStatus: StatusString | string | undefined
    const output: ExecuteStatementCommandOutput = await client.executeStatement({
      Sql: sql,
      Database: process.env.REDSHIFT_DATABASE,
      WorkgroupName: process.env.REDSHIFT_WORKGROUPNAME
    })
...

不清楚为何连接地址指向127.0.0.1,求解决方案。

解决方案

1. 移除endpoint参数

Redshift Data API的客户端不需要手动指定endpoint,SDK会根据你传入的region自动生成对应区域的Data API官方端点。你当前设置的endpoint参数要么是空值,要么是无效值,导致SDK fallback到本地地址127.0.0.1:80尝试连接。

修正后的客户端初始化代码:

const client = new RedshiftData({
    region: process.env.AWS_REGION
})

2. 验证核心配置

  • IAM权限:确保Lambda执行角色拥有redshift-data:ExecuteStatement权限,同时允许访问目标Redshift Serverless工作组。
  • Redshift Serverless工作组配置:确认工作组已启用Data API功能,并且网络配置允许Lambda访问(如果Lambda在VPC内,需确保工作组的VPC与Lambda的VPC连通;如果是公网访问,需开启工作组的公网访问权限)。
  • 环境变量有效性:检查REDSHIFT_DATABASE和REDSHIFT_WORKGROUPNAME环境变量是否正确配置,指向存在的数据库和工作组名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 13:43:26