node.js - 无法从 aws lambda 函数触发 aws sqs
问题描述
我有一个需要触发 aws sqs 的 aws lambda 函数,但我总是收到以下消息:
Fail Send MessageAccessDenied: Access to the resource https://sqs.eu-west-1.amazonaws.com/ is denied
这是我的 lambda:
var QUEUE_URL = 'https://sqs.eu-west-1.amazonaws.com/*****/*****'
var AWS = require('aws-sdk');
var sqs = new AWS.SQS({region : 'eu-west-1'});
exports.handler = function(event, context) {
var params = {
MessageBody: JSON.stringify(event),
QueueUrl: QUEUE_URL
};
sqs.sendMessage(params, function(err,data){
if(err) {
console.log('error:',"Fail Send Message" + err);
context.done('error', "ERROR Put SQS"); // ERROR with message
} else{
console.log('data:',data.MessageId);
context.done(null,''); // SUCCESS
}
});
}
有人知道问题可能是什么或aws.sqs的好资源吗?我是否需要传递凭据,以及如何在 aws.sqs 中设置我的队列 URL?
解决方案
您是否为您的 Lambda 函数分配了执行角色,允许它向 SQS 队列发送消息? 本文详细介绍了如何执行此操作,特别是设置 IAM 角色部分。
推荐阅读
- angular - 无法读取未定义的属性“事件””(角度日历更新到 0.28.16)
- dart - 如何转换列表
列出 没有得到 Dart 中 linter 的警告? - spring-boot - OptaPlanner - 在 Spring Boot 应用程序中找不到 SolverManager 和 SolverManager 类型的 bean
- r - R - 传单在顶层设置多边形
- css - 使用 grid-auto-flow: column; 在水平滚动的最后一项上的 CSS Grid 填充右侧
- arrays - 如何对数组元素 int Dart 求和
- javascript - 试图用反应制作弹出窗口
- jenkins - 当我使用 Dockerfile 运行 Jenkins 管道以构建 spring-boot 应用程序时,找不到 docker
- python - 优化 osmnx 网络中的最短路径计算
- mysql - 如何选择具有其他列最大值的列,以及另一个表中列的所有对应行?