it-swarm.asia

Mengirim email melalui AWS SES dalam fungsi AWS Lambda

Saya telah membuat fungsi sederhana yang sangat mendasar pada AWS Lambda yang akan digunakan untuk menerima pengiriman formulir. 

Bagian dari fungsinya adalah mengirim email ke orang tertentu, cukup sederhana. Saya mencoba menggunakan SES AWS untuk melakukan ini. Saya telah mengatur layanan SES dll, dan memverifikasi akun yang ingin saya kirimi dan telah dapat mengirim email pengujian. Semua bekerja !! 

Sekarang ketika saya mencoba dan melakukan hal yang sama dalam AWS Lambda dan menggunakan aws sdk itu tidak mengirim email. Saya tidak mendapatkan kesalahan atau apa pun. 

Di bawah ini adalah kode yang saya gunakan untuk fungsi AWS Lambda. 

Adakah yang punya pengalaman menggunakan lambda dan mengirim email melalui ses, melalui fungsi lambda? Atau bahkan hanya menggunakan node.js aws sdk akan sangat membantu. 

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);
};
34
Darren

Tampaknya saya memiliki context.succeed (event) ditempatkan di area kode yang salah. 

Setelah saya memindahkannya ke callback sendEmail semuanya bekerja.

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);
    }
});};
21
Darren

Ini karena Lambda membekukan wadah ketika fungsi keluar dan semua proses async dibekukan, seperti email Anda. Ini terutama berlaku untuk Node. Lihat Model Pemrograman Lambda. http://docs.aws.Amazon.com/lambda/latest/dg/lambda-introduction.html

0
halt00