2017-06-30 12 views
2

管理コンソールで複数のSQSキューを作成しました。 ( - みんな - すべてのSQSアクション許可)SQSキューに接続する方法

私は必要な資格情報を作成し、AWSに接続することができます

すべてのキューがフルアクセス権限を持っています。

今、私が作成したキューに接続しようとしています:

public static List<String> listQueues(AmazonSQS sqs) { 
    System.out.println("Listing all queues in your account.\n"); 
    ListQueuesResult queueList = sqs.listQueues(); 
    List<String> queueUrls = queueList.getQueueUrls(); 
    for (String queueUrl : queueUrls) { 
    System.out.println(" QueueUrl: " + queueUrl); 
    } 
    System.out.println(); 

    return queueUrls; 
} 

しかし、何も表示されません。

同時に、私は実用的キューを作成する場合:

public static String createQueue(String queueName, AmazonSQS sqs) { 
    System.out.println("Creating a new SQS queue called MyQueue.\n"); 
    CreateQueueRequest createQueueRequest = new CreateQueueRequest(queueName); 
    return sqs.createQueue(createQueueRequest).getQueueUrl(); 
} 

をそれは、リストされていると私はそれからメッセージを送受信することができます。

しかし、管理コンソールでは作成されたキューは表示されません!

私は間違っていますか?あなたは(私のような)アマゾンから例WIH再生している場合

ところで、私はURL


により、管理コンソールから作成されたキューに接続することができます - BasicAWSCredentialsだけアクセスキーが含まれていることを心に留めておきますsecretKey領域は、資格情報ファイルから読み取られません。

地域がAmazonSQSClientのために、 "手動" に設定されている:

public static AmazonSQS createSqsClient() { 
    AWSCredentials credentials = null; 
    try { 
     credentials = new ProfileCredentialsProvider().getCredentials(); 
    } catch (Exception e) { 
     throw new AmazonClientException(
       "Cannot load the credentials from the credential profiles file. " + 
         "Please make sure that your credentials file is at the correct " + 
         "location (~/.aws/credentials), and is in valid format.", 
       e); 
    } 

    AmazonSQS sqs = new AmazonSQSClient(credentials); 
    Region region = Region.getRegion(Regions.US_EAST_2); 
    sqs.setRegion(region); 
    return sqs; 
} 

答えて

2

SQSキューは、特定の領域に位置しています。その後、

  • コードが領域を作成した領域

    1. 確認は、あなたがAWS Management Consoleで、同じ地域で探していることを確認してください。
  • +0

    無料のテストアカウントを持っているので、すべてのキューが** us-east-2 **領域に作成されます。 私は資格情報ファイルに設定しました: **地域= us-east-2 ** しかし、それは助けになりませんが、私はこのキューにURLだけで接続できます。 – sergpank

    +1

    @sergpank "私は無料のテストアカウントを持っているので、すべての待ち行列はus-east-2 regionに作られています" ..これは間違いです。 AWSは、フリーティアアカウントをシングルリージョンに限定しません。 –

    +3

    @sergpank AWS Management Consoleでリージョンを変更すると、キューが見つかることが100%確信しています。ほとんどの場合、us-east-1(バージニア州)地域です。 –

    2

    あなたは、特定の領域を使用するようにSDKを設定しなかったことは、APIを介しても、環境変数を経由して、または$HOME/.aws/configを経由して、キューを作成するためにあなたのAPIコール(createQueue)が新しい作成されている可能性があります場合にはデフォルト領域のキューus-east-1(バージニア州)。その場合はチェックしてください。

    複数のアカウントをお持ちの場合は、正しいアカウントに資格情報を使用していることを確認してください。

    +1

    あなたはその地域について絶対に正しかった! この例では** US_WEST_2 **に設定されていることに気付きませんでした。 – sergpank

    関連する問題