zmb*_*mbq 2 javascript amazon-sqs amazon-web-services
我有一个网站,该网站将客户端的消息写入Amazon SQS队列。每个人都可以写到队列中。我们有一个服务器端进程,该进程读取队列消息并进行处理。
队列配置了对所有人的写访问权限,这是其策略:
{
"Version": "2012-10-17",
"Id": "arn:aws:sqs:.../SQSDefaultPolicy",
"Statement": [{
"Sid": "Sid1537097246229",
"Effect": "Allow",
"Principal": "*",
"Action": "SQS:SendMessage",
"Resource": "arn:aws:sqs:..."
}]
}
Run Code Online (Sandbox Code Playgroud)
但是,如果没有访问密钥和秘密密钥,我们似乎无法写入队列。AWS开发工具包返回错误,指出未提供凭证。我们正在使用AWS SQS文档中描述的代码。
我不建议允许未经身份验证的SQS队列访问,但是如果您必须这样做,则应该能够通过JavaScript SDK发出未经身份验证的请求,如下所示:
const AWS = require('aws-sdk');
AWS.config.update({ region: 'us-east-1' });
const sqs = new AWS.SQS({ apiVersion: '2012-11-05' });
const params = {
DelaySeconds: 10,
MessageAttributes: {
Title: {
DataType: 'String',
StringValue: 'The Whistler',
},
Author: {
DataType: 'String',
StringValue: 'John Grisham',
},
},
MessageBody: 'NY Times fiction bestseller 12/11/2016.',
QueueUrl: 'QUEUE_URL_HERE',
};
sqs.makeUnauthenticatedRequest('sendMessage', params, (err, data) => {
if (err) {
console.log('Error', err);
} else {
console.log('Success', data.MessageId);
}
});
Run Code Online (Sandbox Code Playgroud)