gpt4 book ai didi

node.js - AWS Lambda::如何在本地 ubuntu 计算机上测试我的代码?

转载 作者:太空宇宙 更新时间:2023-11-04 00:05:18 26 4
gpt4 key购买 nike

我有一个由 SQS 调用的 Lambda 函数代码。SQS 触发我的 Lambda 函数(在 NodeJS 中)。

Lambda 还将发送一封 SES 电子邮件。有没有办法可以在本地 Ubuntu 上测试这个,而不是总是使用 AWS Web 控制台?如有任何帮助,我们将不胜感激。

这是我的 Lambda NodeJS 代码:此代码仅适用于 AWS Lambda。当我运行时$node index.js ,它不发送 SES 电子邮件。

    var aws = require("aws-sdk");
var nodemailer = require("nodemailer");

aws.config.loadFromPath('aws_config.json');


var ses = new aws.SES();
var s3 = new aws.S3();

// Set the region
aws.config.update({region: 'us-west-2'});

exports.handler = function (event, context, callback) {
const response = {
statusCode: 200,
body: JSON.stringify({
message: 'SQS event processed.',
input: event,
}),
};

console.log('event: ', JSON.stringify(event.Records));
result = JSON.stringify(event.Records)
result = result.replace(/(^\[)/, '');
result = result.replace(/(\]$)/, '');
var resultObj = JSON.parse(result);
var idCustomer = resultObj.body;


console.log('===SENDING EMAIL====');

// Create sendEmail paramssd
var params = {
Destination: {
/* required */
CcAddresses: [
'XXXXX@gmail.com',
/* more items */
]
},
Message: {
/* required s*/
Body: {
/* required */
Html: {
Charset: "UTF-8",
Data: "BODY:"
},
Text: {
Charset: "UTF-8",
Data: "TEXT_FORMAT_BODY"
}
},
Subject: {
Charset: 'UTF-8',
Data: idCustomer
}
},
Source: 'xxxx@eeeee.com', /* required */
ReplyToAddresses: [
'wwwwww@wwwwwwwww.com',
/* more items */
],
};

// Create the promise and SES service object
var sendPromise = new aws.SES({apiVersion: '2010-12-01'}).sendEmail(params).promise();

// Handle promise's fulfilled/rejected states s
sendPromise.then(
function (data) {
console.log("Successfully sent using SES");
console.log(data.MessageId);
}).catch(
function (err) {
console.log("An Error occured while senting using using SES");
console.error(err, err.stack);
});


};

最佳答案

您绝对应该看看 SAM LOCAL。它是AWS团队专门开发的用于测试lambda的工具。

https://github.com/awslabs/aws-sam-cli

Publishes a version of your function from the current snapshot of $LATEST. That is, AWS Lambda takes a snapshot of the function code and configuration information from $LATEST and publishes a new version. The code and configuration cannot be modified after publication. For information about the versioning feature, see

使用起来很简单,只需输入

sam local invoke --event event.json 

在幕后,它将为您的 lambda 运行一个 docker cotnainer 并调用它。

关于您的 SES,您应该在代码中放置一个小的 if(SAM_LOCAL) 条件,并且仅当不在本地模式下时才调用真正的条件。请注意,SAM_LOCAL 是本地运行函数时由 SAM LOCAL 工具设置的环境变量。

祝你好运!

关于node.js - AWS Lambda::如何在本地 ubuntu 计算机上测试我的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52588615/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com