AWS CLI和Java SDK为SQS队列返回错误的URL

时间:2017-10-10 21:26:16

标签: java amazon-web-services aws-sdk amazon-sqs aws-cli

我已在我的主目录中为我的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获得的URL包含数字9 ... 42,但这不是我在AWS控制台中看到的。在控制台中,URL包含数字2 ... 73。

当我手动将控制台中的URL添加到我的方法时(如上所示),我可以成功向队列发送消息,但是当我尝试使用list-queues操作给出的URL时,{{ 1}}操作无声地失败。

这些网址可能有何不同?

我还应该补充一点,还有另外两个队列("第一个"和#34; first.fifo")我现在已经删除但不再显示在控制台中,但两者都是我使用sqs.sendMessage()时仍然列出。对于所有这些队列,控制台URL始终包含相同的2 ... 73号码,我从CLI和SDK获得的URL始终包含相同的9 ... 42号码。

我的问题是 - 这个号码是什么,为什么会有所不同?

1 个答案:

答案 0 :(得分:2)

我几乎在发布问题时就找到了答案。号码是the AWS account number,我使用的是不同帐户的访问密钥/密钥组合到我预期的帐户。

队列没有消失的原因是我通过向他们发送消息而无意中创建了它们。

我的5来电没有默默失败,邮件显示在另一个帐户的队列中。