管理コンソールで複数の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;
}
無料のテストアカウントを持っているので、すべてのキューが** us-east-2 **領域に作成されます。 私は資格情報ファイルに設定しました: **地域= us-east-2 ** しかし、それは助けになりませんが、私はこのキューにURLだけで接続できます。 – sergpank
@sergpank "私は無料のテストアカウントを持っているので、すべての待ち行列はus-east-2 regionに作られています" ..これは間違いです。 AWSは、フリーティアアカウントをシングルリージョンに限定しません。 –
@sergpank AWS Management Consoleでリージョンを変更すると、キューが見つかることが100%確信しています。ほとんどの場合、us-east-1(バージニア州)地域です。 –