AWS CLI 和 Java SDK return SQS 队列的 URL 不正确
AWS CLI and Java SDK return incorrect URLs for SQS queues
我已经使用主目录中的配置文件配置了我的 AWS CLI 工具,我的区域设置为 eu-west-1
并且可以成功列出队列:
➜ ~ 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 获得的 URLs 包含数字 9...42,但这不是我在 AWS 控制台中看到的。在控制台中,URL 包含数字 2...73.
当我手动将 URL 从控制台添加到我的方法时(如上所示),我可以成功地将消息发送到队列,但是当我尝试使用 URL 时list-queues
操作,sqs.sendMessage()
操作静默失败。
这些 URL 可能不同的原因是什么?
我还应该补充一点,还有另外两个队列("first" 和 "first.fifo")我现在已经删除并且不再显示在控制台中,但是当我使用 list-queues
。对于所有这些队列,控制台 URLs 始终包含相同的 2...73 数字,而我从 CLI 和 SDK 获得的 URLs 始终包含相同的 9...42 数字。
我的问题是 - 这个数字是多少,为什么会不同?
我几乎一发布问题就找到了答案。号码是 the AWS account number,我使用的是另一个帐户的访问密钥/秘密密钥组合,与我预期的帐户不同。
队列没有消失的原因是我通过向它们发送消息无意中自己创建了它们。
我的 sqs.sendMessage()
呼叫并没有无声地失败,消息出现在另一个帐户的队列中。
我已经使用主目录中的配置文件配置了我的 AWS CLI 工具,我的区域设置为 eu-west-1
并且可以成功列出队列:
➜ ~ 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 获得的 URLs 包含数字 9...42,但这不是我在 AWS 控制台中看到的。在控制台中,URL 包含数字 2...73.
当我手动将 URL 从控制台添加到我的方法时(如上所示),我可以成功地将消息发送到队列,但是当我尝试使用 URL 时list-queues
操作,sqs.sendMessage()
操作静默失败。
这些 URL 可能不同的原因是什么?
我还应该补充一点,还有另外两个队列("first" 和 "first.fifo")我现在已经删除并且不再显示在控制台中,但是当我使用 list-queues
。对于所有这些队列,控制台 URLs 始终包含相同的 2...73 数字,而我从 CLI 和 SDK 获得的 URLs 始终包含相同的 9...42 数字。
我的问题是 - 这个数字是多少,为什么会不同?
我几乎一发布问题就找到了答案。号码是 the AWS account number,我使用的是另一个帐户的访问密钥/秘密密钥组合,与我预期的帐户不同。
队列没有消失的原因是我通过向它们发送消息无意中自己创建了它们。
我的 sqs.sendMessage()
呼叫并没有无声地失败,消息出现在另一个帐户的队列中。