[英]Why is the Node.js AWS-SDK returning the wrong SQS queue URL when creating a local queue
我正在使用ElasticMQ在我的本地開發機器上模擬AWS SQS。 我在Docker容器中運行ElasticMQ,使用docker-osx-dev在Linux VM上托管Docker容器。 這意味着我在VM的IP上訪問本地ElasticMQ實例,而不是我的localhost IP。
當我嘗試使用下面的代碼在EMQ中創建隊列時,它返回localhost處的隊列URL,而不是托管docker容器的VM的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
。 如果我用實際IP地址替換URL中的'localhost',我可以成功訪問具有該URL的隊列,表明它確實已創建,但這是一個非常討厭的黑客。 我需要在上面的代碼中更改哪些內容才能解決此問題?
更新:無效端點我在使用ElasticMQ模擬容器出現另一個問題后返回到此。 這次它是docker-compose文件的一部分,另一個容器通過它的docker主機名訪問它。 SQS不接受帶有下划線的主機名。 由於下划線很常見,因此大多數人都會使用docker-compose文件。 如果您收到有關無效端點的錯誤消息,請嘗試使用連字符而不是下划線在compose文件中重命名容器(即http:// sqs_local:9324將失敗, http:// sqs-local:9324將會正常) 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.