[英]Node.js aws Lambda SQS functions are not firing
我有一個 lambda function 試圖從 aws-sdk 調用 SQS 函數,但它們不會觸發。 對於我的 function,我有兩個權限策略 AmazonSQSFullAccess 和 AWSLambdaFullAccess。 function 能夠被 SQS 消息調用,但是當我調用 sqs.listQueues、sqs.createQueue 或 sqs.sendMessage 時,它什么也沒做。
const AWS = require('aws-sdk')
const sqs = new AWS.SQS();
exports.handler = async (event) => {
console.log(event);
sqs.listQueues({}, function(err, data) {
if (err) {
console.log("Error", err);
} else {
console.log("Success", data.QueueUrls);
}
});
var params = {
QueueName: 'Test Queue',
Attributes: {
'DelaySeconds': '60',
'MessageRetentionPeriod': '86400'
}
};
sqs.createQueue(params, function(err, data) {
if (err) {
console.log("Error", err);
} else {
console.log("Success", data.QueueUrl);
}
});
};
這是日志 output:
START RequestId: 0e345c02-b5f2-4816-8e58-c9a8cfbc4069 Version: $LATEST<br/>
2020-06-24T21:26:40.697Z 0e345c02-b5f2-4816-8e58-c9a8cfbc4069 INFO { key1: 'value1', key2: 'value2', key3: 'value3' }<br/>
END RequestId: 0e345c02-b5f2-4816-8e58-c9a8cfbc4069<br/>
REPORT RequestId: 0e345c02-b5f2-4816-8e58-c9a8cfbc4069 Duration: 521.92 ms Billed Duration: 600 ms Memory Size: 128 MB Max Memory Used: 83 MB Init Duration: 370.65 ms
我已經創建了兩個未記錄的隊列,並且沒有出現新的“測試隊列”。 這是權限問題還是配置問題或完全是其他問題?
以下代碼有效(針對列出和創建進行了測試)。 也檢查了在 SQS 頁面上創建的一個。 我將await
與promise
一起使用。
還要注意隊列名稱,檢查限制
隊列名稱最多可包含 80 個字符。 可接受以下字符:字母數字字符、連字符 (-) 和下划線 (_)。
const AWS = require('aws-sdk')
const sqs = new AWS.SQS();
exports.handler = async (event) => {
console.log(event);
let queues = await sqs.listQueues().promise();
// return queues
var params = {
QueueName: 'TestQueue', // name doesnt contain space
Attributes: {
'DelaySeconds': '60',
'MessageRetentionPeriod': '86400'
}
};
await sqs.createQueue(params).promise();
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.