我在管理控制台中创建了几个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();
}
它已列出,我可以从中发送和接收消息。
但是我没有在管理控制台中看到创建的队列!
我做错了什么?
BTW我可以通过URL连接到从管理控制台创建的队列
如果您正在玩亚马逊(例如我)的示例,请注意 BasicAWSCredentials 仅包含 accessKey 和 secretKey ,以及<不会从凭据文件中读取em> region 。
正在为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;
}
答案 0 :(得分:2)
SQS队列位于特定区域。
答案 1 :(得分:2)
如果您没有将SDK配置为使用特定区域,无论是通过API,通过环境变量还是通过createQueue
,您的API调用可能都是为了创建队列(us-east-1
)正在默认区域 return new Promise(resolve => {
let xhr = new XMLHttpRequest();
xhr.open('get', url, true);
xhr.setRequestHeader("Access-Control-Allow-Origin", '*');
xhr.setRequestHeader('Accept', 'application/octet-stream');
xhr.setRequestHeader('Authorization', 'Bearer ' + token);
// xhr.overrideMimeType('text/xml; charset=iso-8859-1');
xhr.overrideMimeType('text/xml; charset=iso-8859-1');
xhr.responseType = "arraybuffer";
xhr.onreadystatechange= function () {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
console.log(JSON.stringify((xhr.response)));
resolve(new Blob([xhr.response], { type: 'application/pdf' }));
} else {
//do something
}
}
}
xhr.send();
});
then use it like this:
your-function.then(
(blob :Blob) => {
var downloadUrl = URL.createObjectURL(blob);
var downloadLink = document.createElement('a');
downloadLink.href = downloadUrl;
downloadLink.target = '_blank';
document.body.appendChild(downloadLink);
downloadLink.click();
});
(弗吉尼亚州)中创建新队列。检查是否是这种情况。
如果您有多个帐户,请确保使用正确帐户的凭据。