无法从 Javascript v3 客户端连接到 Localstack SQS

问题描述 投票:0回答:2

创建用于测试的 Localstack 实例时:我可以创建一个队列,并且通过 AWS CLI 一切似乎都工作正常。我可以看到它存在并发送/接收消息。

但是,当我尝试使用 Javascript v3 Client 时,无论我做什么,我似乎都无法连接它。

在 v3 SDK 中,您在请求中指定队列 URL,如下所示:

      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 this.sqsClient.send(command);

但是,它总是会显示类似“错误:InvalidAddress:地址 https://sqs.us-east-1.amazonaws.com/ 对此端点无效”的信息。我已经尝试了很多变体,我真的束手无策。我只是错过了一些明显的东西吗?

我正在使用此示例的变体来引导队列,并且我非常有信心该队列存在并且可以工作。

node.js amazon-web-services amazon-sqs
2个回答
1
投票

我玩了几个小时后终于明白了这一点。您需要在 SQS 构造函数中指定端点。如果有人遇到同样的问题:

 constructor() {
    const url: URL = new URL('http://localhost:4566'); //<-- this is the fixer
    const endpoint: EndpointV2 = {
      url: url,
    };
    this.sqsClient = new SQSClient({ region: 'us-east-1', endpoint: endpoint }); 
  }

0
投票

如果您使用的是 docker:

您需要更新到最新的本地堆栈

更新dockerfile

FROM localstack/localstack:3.3.0

更新

docker-compose.yml

https://docs.localstack.cloud/getting-started/installation/#starting-localstack-with-docker-compose

这是我的本地堆栈服务

localstack:
container_name: "${LOCALSTACK_DOCKER_NAME:-localstack-main}"
image: localstack/localstack
networks:
  backend:
    ipv4_address: 172.21.0.12
ports:
  - "4566:4566"            # LocalStack Gateway
  - "4510-4559:4510-4559"  # external services port range
environment:
  # LocalStack configuration: https://docs.localstack.cloud/references/configuration/
  - DEBUG=${DEBUG:-0}
  - DISABLE_CORS_CHECKS=1
  - S3_ENABLE_CORS=false
  - DISABLE_CUSTOM_CORS_S3=1
© www.soinside.com 2019 - 2024. All rights reserved.