Lambda İşlevini Zamanlanmış Olaylarla Kullanma
Zamanlanmış olayların, bir kural kümesine göre düzenli aralıklarla gerçekleşmesi varsayılır. Zamanlanmış olaylar, bulut saat hizmetlerinde tanımlanan bir aralıktan sonra Lambda işlevini yürütmek için kullanılır. AWS Lambda ile birlikte cron işleri üzerinde çalışmak için en iyi şekilde kullanılırlar. Bu bölüm basit bir örnekle, zamanlanmış olayları ve AWS Lambda'yı kullanarak her 5 dakikada bir nasıl posta gönderileceğini açıklayacaktır.
Gereksinimler
Lambda işlevini Zamanlanmış olaylarla kullanma gereksinimleri aşağıdaki gibidir -
- AWS SES kullanarak e-posta kimliğini doğrulayın
- AWS SES, Cloudwatch ve AWS Lambda'yı kullanmak için Rol Oluşturun
- E-posta göndermek için Lambda İşlevi oluşturun
- AWS CloudWatch'tan planlanan olaylar için kural ekleyin
Misal
Ele alacağımız örnek, CloudWatch olayını AWS Lambda işlevine ekleyecektir. Cloudwatch, kendisine eklenen zaman modeline göre AWS Lambda'yı tetikleyecektir. Örneğin, aşağıdaki örnekte tetikleyici olarak 5 dakika kullandık. Bu, her 5 dakikada bir AWS Lambda'nın tetikleneceği ve AWS Lambda'nın her tetiklendiğinde posta göndereceği anlamına gelir.
Aynısı için temel blok şeması aşağıda gösterilmiştir -
AWS SES kullanarak E-posta Kimliğini doğrulayın
AWS'de oturum açın ve aşağıda gösterildiği gibi AWS SES hizmetine gidin -
Şimdi tıklayın Simple Email Gösterildiği gibi servis -
Tıklayın Email Addresses gösterildiği gibi sol tarafta -
Bir düğme görüntüler Verify a New Email Address. Tıkla.
Giriş Email Addressdoğrulamak istiyorsun. TıklayınVerify This Email Addressbuton. Şu e-posta konulu e-posta kimliğiyle AWS'den e-posta alacaksınız: Amazon Web Services - ABD Doğu (K.Virginia) bölgesinde E-posta Adresi Doğrulama İsteği
E-posta adresini doğrulamak için postada verilen bağlantıya tıklayın. Doğrulandıktan sonra, e-posta kimliğini aşağıdaki gibi gösterecektir -
AWS SES, Cloudwatch ve AWS Lambda'yı kullanmak için Rol Oluşturun
Ayrıca, hizmetleri kullanma izni veren bir rol de oluşturabilirsiniz. Bunun için IAM'ye gidin ve Rol'ü seçin. Gerekli politikaları ekleyin ve rolü oluşturun. Burada oluşturulan rolünevents with lambda.
E-posta Göndermek İçin Lambda İşlevi Oluşturun
Çalışma zamanını nodejs olarak kullanarak Lambda işlevi oluşturmak için adımları izlemeniz gerekecektir.
Şimdi, gösterildiği gibi Lambda'ya tetikleyici ekleyin -
Ayrıntıları şuraya ekle: CloudWatch Events Trigger aşağıda gösterildiği gibi -
Oluşturulan kural tetikleyicisine göre etkinliğin her 5 dakikada bir tetikleneceğini unutmayın.
E-posta göndermek için Lambda kodu aşağıda verilmiştir -
var aws = require('aws-sdk');
var ses = new aws.SES({
region: 'us-east-1'
});
exports.handler = function(event, context, callback) {
var eParams = {
Destination: {
ToAddresses: ["[email protected]"]
},
Message: {
Body: {
Text: {
Data: "this mail comes from aws lambda event scheduling"
}
},
Subject: {
Data: "Event scheduling from aws lambda"
}
},
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("EMAIL CODE END");
console.log('EMAIL: ', email);
context.succeed(event);
callback(null, "email is send");
}
});
};
Şimdi AWS SES hizmetine ihtiyacımız var. Bunu, aşağıda gösterilen kodu kullanarak ekleyebilirsiniz -
var aws = require('aws-sdk');
var ses = new aws.SES({
region: 'us-east-1'
});
E-posta göndermek için nodejs, Yarattık eParams gibi ayrıntılara sahip nesne example mail, to mail id ve the body with message aşağıdaki gibi -
var eParams = {
Destination: {
ToAddresses: ["[email protected]"]
},
Message: {
Body: {
Text: {
Data: "this mail comes from aws lambda event scheduling"
}
},
Subject: {
Data: "Event scheduling from aws lambda"
}
},
Source: "[email protected]"
};
E-posta göndermek için Lambda kodu aşağıdaki gibidir -
var email = ses.sendEmail(eParams, function(err, data) {
if (err) console.log(err);
else {
console.log("===EMAIL SENT===");
console.log("EMAIL CODE END");
console.log('EMAIL: ', email);
context.succeed(event);
callback(null, "email is send");
}
});
Şimdi, bu Lambda işlevini kaydedelim ve postalar için e-posta kimliğini kontrol edelim. Aşağıda gösterilen ekran görüntüsü, postanın her 5 dakikada bir AWS Lambda'dan gönderildiğini göstermektedir.