フォームの送信を受け入れるために使用される、AWS Lambdaで非常に基本的なシンプルな関数を作成しました。
機能の一部は、特定の人にメールを送信することです。非常に簡単です。これを行うためにAWS SESを使用しようとしています。 SESサービスなどを設定し、送信したいアカウントを確認し、テストメールを送信できました。すべての作品!!
今、AWS Lambda内で同じことを試みて、aws sdkを使用すると、メールは送信されません。エラーなどは何も表示されません。
以下は、AWS Lambda関数に使用しているコードです。
ラムダを使用し、ラムダ関数を介してses経由でメールを送信した経験はありますか?または、node.js aws sdkを使用するだけでも役立つと思われます。
var aws = require('aws-sdk');
var ses = new aws.SES({
accessKeyId: 'myAccessKey',
secretAccesskey: 'mySecretKey',
region: 'eu-west-1'
});
exports.handler = function(event, context) {
console.log("Incoming: ", event);
var output = querystring.parse(event);
var eParams = {
Destination: {
ToAddresses: ["[email protected]"]
},
Message: {
Body: {
Text: {
Data: output.Key1
}
},
Subject: {
Data: "Ses Test Email"
}
},
Source: "[email protected]"
};
console.log('===SENDING EMAIL===');
var email = ses.sendEmail(eParams, function(err, data){
if(err) console.log(err);
else {
console.log("===EMAIL SENT===");
console.log(data);
}
});
console.log("EMAIL CODE END");
console.log('EMAIL: ', email);
context.succeed(event);
};
Context.succeed(event)をコードの間違った領域に配置したようです。
SendEmailコールバックに移動すると、すべて機能しました。
var aws = require('aws-sdk');
var ses = new aws.SES({
accessKeyId: 'myAccessKey',
secretAccesskey: 'mySecretKey',
region: 'eu-west-1'
});
exports.handler = function(event, context) {
console.log("Incoming: ", event);
var output = querystring.parse(event);
var eParams = {
Destination: {
ToAddresses: ["[email protected]"]
},
Message: {
Body: {
Text: {
Data: output.Key1
}
},
Subject: {
Data: "Ses Test Email"
}
},
Source: "[email protected]"
};
console.log('===SENDING EMAIL===');
var email = ses.sendEmail(eParams, function(err, data){
if(err) {
console.log(err);
context.fail(err);
};
else {
console.log("===EMAIL SENT===");
console.log("EMAIL CODE END");
console.log('EMAIL: ', email);
console.log(data);
context.succeed(event);
}
});};
これは、関数が終了し、メールなどの非同期プロセスが凍結されると、Lambdaがコンテナを凍結するためです。これは特にNodeに当てはまります。 Lambdaプログラミングモデルを参照してください。 http://docs.aws.Amazon.com/lambda/latest/dg/lambda-introduction.html