javascript - 如何在没有访问密钥和密钥的情况下写入只写 SQS 队列
问题描述
我有一个将消息从客户端写入 Amazon SQS 队列的网站。每个人都可以写入队列。我们有一个读取队列消息并处理它们的服务器端进程。
队列配置了对每个人的写入权限,这是它的策略:
{
"Version": "2012-10-17",
"Id": "arn:aws:sqs:.../SQSDefaultPolicy",
"Statement": [{
"Sid": "Sid1537097246229",
"Effect": "Allow",
"Principal": "*",
"Action": "SQS:SendMessage",
"Resource": "arn:aws:sqs:..."
}]
}
但是,如果没有访问密钥和密钥,我们似乎无法写入队列。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);
}
});
推荐阅读
- python - 这是如何生成图像的?
- json - 我对 JSONSerialization.jsonObject(with: dataResponse, options: .allowFragments) 有一些疑问
- java - 如何将 ObjectId 存储在 HttpSession 中并检索它?(MonoDB Java 驱动程序)
- c# - 如何等待 Func
().调用 - ios - Swift 4 如何在 ViewControllers 和 ContainerViews 之间传递数据?
- javascript - 将数据从 api 导入新模块 - .map() 不是函数
- javascript - how to pass props to lazy loading components?
- javascript - 如何在 cypress 中拖放 ul > li 元素
- ios - 带有子视图的动态宽度视图
- python - 如何在python中一列的某些值上绘制两列折线图