AWS CLI和Java SDK返回不正确的网址,SQS队列
问题描述:
我有一个配置文件配置我的AWS CLI工具在我的主目录与我的区域设置为eu-west-1
并能成功地列出队列:AWS CLI和Java SDK返回不正确的网址,SQS队列
➜ ~ aws sqs list-queues
{
"QueueUrls": [
"https://eu-west-1.queue.amazonaws.com/9*********42/second"
]
}
我有下面的方法:
void sendMessage(String msg) {
AmazonSQS sqs = AmazonSQSClientBuilder.standard()
.withRegion(Regions.EU_WEST_1)
.build();
CreateQueueRequest createQueueRequest = new CreateQueueRequest("second");
String myQueueURL = sqs.createQueue(createQueueRequest).getQueueUrl();
System.out.println("A list of queues...");
for (String qURL : sqs.listQueues().getQueueUrls()) {
System.out.println("Found queue: " + qURL);
}
System.out.println("Sending msg '" + msg + "' to Q: " + myQueueURL);
sqs.sendMessage(new SendMessageRequest(myQueueURL, msg));
sqs.sendMessage(new SendMessageRequest("https://sqs.eu-west-1.amazonaws.com/2*********73/second", msg + " with URL"));
}
从运行这种方法的输出是:
A list of queues...
Found queue: https://sqs.eu-west-1.amazonaws.com/9*********42/second
Sending msg 'test message' to Q: https://sqs.eu-west-1.queue.amazonaws.com/9*********42/second
我从AWS CLI和SDK获得的URL包含数字9 ... 42,但这不是我在AWS控制台中看到的。在控制台中,URL包含数字2 ... 73。
当我添加了来自控制台的URL到我的方法手动(如上所示)我可以成功地发送一个消息到队列中,但是当我尝试使用由list-queues
操作给出的网址,则sqs.sendMessage()
操作默默地失败。
这些网址可能会有所不同吗?
我还应该补充说,还有两个其他队列(“first”和“first.fifo”),我现在已经删除并且不再显示在控制台中,但是当我使用list-queues
时,这两个队列仍然列出。对于所有这些队列,控制台URL始终包含相同的2 ... 73编号,而我从CLI和SDK获得的URL始终包含相同的9 ... 42编号。
我的问题是 - 这个数字是什么,为什么它会不同?
答
几乎在我发布问题后,我找到了答案。这个号码是the AWS account number,我使用了一个来自不同帐户的访问密钥/密钥组合。
队列没有消失的原因是我无意中通过向他们发送消息来创建它们。
我的sqs.sendMessage()
电话没有默默失败,消息出现在另一个帐户的队列中。
感谢您发布解决方案。我们大多数人在管理多个AWS账户时犯了这个错误。 –
删除这个问题并隐藏我的耻辱肯定是很有诱惑力的,但我认为这是停止深夜工作的另一个原因! – Mike