2017-10-10 2 views
0

J'ai configuré mes AWS outils CLI avec un fichier de configuration dans mon répertoire personnel avec mon ensemble de la région à eu-west-1 et peut énumérer avec succès les files d'attente:AWS CLI et Java SDK retour URL incorrectes pour les files d'attente SQS

➜ ~ aws sqs list-queues 
{ 
    "QueueUrls": [ 
     "https://eu-west-1.queue.amazonaws.com/9*********42/second" 
    ] 
} 

Je la méthode suivante:

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")); 
} 

la sortie de l'exécution de cette méthode est la suivante:

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 

Les URL que je reçois à la fois de l'AWS CLI et du SDK contiennent le numéro 9 à 42, mais ce n'est pas ce que je vois dans la console AWS. Dans la console, l'URL contient le numéro 2 ... 73.

Quand j'ai ajouté l'URL de la console à ma méthode manuelle (ci-dessus), je peux réussir à envoyer un message à la file d'attente, mais lorsque je tente d'utiliser les URL données par l'opération list-queues, l'opération échoue silencieusement sqs.sendMessage().

Y a-t-il une raison pour laquelle ces URL pourraient être différentes?

Je devrais également ajouter qu'il y avait deux autres files d'attente ("first" et "first.fifo") que j'ai maintenant supprimées et n'apparaissent plus dans la console, mais les deux sont toujours listées quand j'utilise list-queues. Pour toutes ces files d'attente, les URL de la console contenaient toujours le même numéro 2 ... 73 et les URL que je reçois de la CLI et du SDK contenaient toujours le même numéro 9 ... 42.

Ma question est - quel est ce numéro et pourquoi pourrait-il être différent?

Répondre

2

J'ai trouvé la réponse presque aussitôt que j'ai posté la question. Le numéro est the AWS account number et j'utilisais une combinaison clé d'accès/clé secrète d'un compte différent de celui que j'avais prévu.

La raison pour laquelle les files d'attente ne disparaissaient pas était que je les avais créées par inadvertance en leur envoyant des messages.

Mes appels sqs.sendMessage() n'échouaient pas en mode silencieux, le message apparaissait dans les files d'attente de l'autre compte.

+1

Merci d'avoir posté la solution. La plupart d'entre nous ont fait cette erreur en gérant plusieurs comptes AWS. –

+0

Il était certainement tentant de supprimer la question et de cacher ma honte, mais je suppose que c'est juste une autre raison d'arrêter de travailler tard le soir! – Mike