我正在使用ElasticMQ在我的本地开发机器上模拟AWS SQS。我在Docker容器中运行ElasticMQ,使用docker-osx-dev在Linux VM上托管Docker容器。这意味着我在VM的IP上访问本地ElasticMQ实例,而不是本地IP。为什么创建本地队列时Node.js AWS-SDK返回错误的SQS队列URL
当我尝试使用下面的代码在EMQ中创建一个队列时,它会在localhost返回一个队列URL,而不是托管docker容器的虚拟机的IP。
var AWS = require('aws-sdk');
var config = {
endpoint: new AWS.Endpoint('http://192.168.59.103:9324'),
accessKeyId: 'na',
secretAccessKey: 'na',
region: 'us-west-2'
}
var sqs = new AWS.SQS(config);
var params = {
QueueName: 'test_queue'
};
sqs.createQueue(params, function(err, data) {
if (err) {
console.log(err);
} else {
console.log(data.QueueUrl);
}
});
目前该代码返回:http://localhost:9324/queue/test_queue
,但它应该返回http://192.168.59.103:9324/queue/test_queue
。如果我将URL中的'localhost'替换为实际的IP地址,我可以成功访问带有该URL的队列,表明它确实被创建,但这是一个非常讨厌的黑客行为。在上面的代码中需要更改哪些内容才能解决此问题?
感谢。今天真的需要这个。 – RichS