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

无法通过Javascript v3 Client连接Localstack SQS问题求助

解决AWS JS SDK v3连接Localstack SQS的InvalidAddress错误

你的问题核心是SQS客户端未配置指向Localstack的端点,导致SDK默认请求AWS官方SQS服务地址,与你指定的本地QueueUrl冲突,抛出地址无效错误。

正确的客户端配置方案

创建SQSClient时必须指定Localstack的端点、区域,并禁用SSL,同时提供占位凭证(Localstack不校验真实AWS凭证):

import { SQSClient, SendMessageCommand } from "@aws-sdk/client-sqs";

// 初始化配置正确的SQS客户端
const sqsClient = new SQSClient({
  region: "us-east-1", // 与Localstack默认区域一致,需和CLI创建队列时的区域匹配
  endpoint: "http://localhost:4566", // Localstack的本地服务端点
  credentials: {
    accessKeyId: "test", // 占位值,Localstack不校验真实凭证
    secretAccessKey: "test",
  },
  tls: false, // 禁用SSL,Localstack默认使用HTTP协议
});

// 发送消息逻辑
const sendMessageToQueue = async (event) => {
  const command = new SendMessageCommand({
    QueueUrl: "http://localhost:4566/000000000000/requestQueue",
    MessageAttributes: {
      Source: {
        DataType: "String",
        StringValue: "Agent X",
      },
    },
    MessageBody: JSON.stringify({ event }),
  });

  try {
    const response = await sqsClient.send(command);
    console.log("消息发送成功:", response.MessageId);
    return response;
  } catch (err) {
    console.error("发送失败:", err);
    throw err;
  }
};

关键配置说明

  • endpoint:强制SDK请求Localstack的本地服务,而非AWS官方SQS端点,这是解决错误的核心。
  • region:必须和你通过CLI创建队列时指定的区域一致,Localstack默认区域为us-east-1。
  • credentials:AWS SDK要求必须提供凭证参数,Localstack仅做格式校验,无需真实有效的AWS密钥。
  • tls: false:Localstack默认使用HTTP协议,禁用SSL避免SDK尝试HTTPS连接导致的错误。

额外检查项

确认你的QueueUrl格式正确:Localstack的队列URL固定为http://localhost:4566/000000000000/队列名,其中000000000000是默认的占位账号ID,需和CLI创建队列时返回的URL一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 02:12:46