Menggunakan Fungsi Lambda dengan CloudTrail

AWS CloudTrailadalah layanan yang tersedia dengan Amazon, yang membantu mencatat semua aktivitas yang dilakukan di dalam konsol AWS. Ini mencatat semua panggilan API dan menyimpan riwayat, yang dapat digunakan nanti untuk tujuan debugging. Perhatikan bahwa kami tidak dapat memicu Lambda dari CloudTrail. Sebaliknya, CloudTrail menyimpan semua riwayat dalam bentuk log di bucket S3 dan kami dapat memicu AWS Lambda dari S3. Setelah log apa pun diproses, AWS Lambda akan dipicu setiap kali log ditambahkan ke bucket S3.

Persyaratan

Sebelum Anda mulai bekerja dengan AWS CloudTrail, S3 dan AWS Lambda, Anda perlu melakukan hal berikut -

  • Buat bucket S3 untuk menyimpan log CloudTrail
  • Buat layanan SNS
  • Buat jalur di CloudTrail dan tetapkan bucket S3 dan layanan SNS
  • Buat peran IAM dengan izin.
  • Buat fungsi aws lambda
  • Konfigurasi AWS Lambda

Contoh

Mari kita pertimbangkan contoh yang menunjukkan cara kerja AWS CloudTrail, S3 dan AWS Lambda. Di sini, kami akan membuat bucket di S3 yang akan menyimpan semua log untuk setiap interaksi yang dilakukan di konsol AWS. Mari kita buat topik SNS dan publikasikan. Untuk tindakan ini, log akan dimasukkan sebagai file di S3. AWS lambda akan dipicu yang akan mengirim email menggunakan layanan Amazon SES.

Diagram blok untuk menjelaskan proses ini adalah seperti yang ditunjukkan di bawah ini -

Buat S3 Bucket untuk Menyimpan log CloudTrail

Buka konsol AWS dan klik layanan S3. KlikCreate bucket dan masukkan nama bucket yang ingin Anda simpan log cloudtrail seperti yang ditunjukkan -

Perhatikan bahwa di sini kami telah membuat bucket S3 cloudtraillogsaws untuk menyimpan log.

Buat Layanan SNS

Buka konsol AWS dan klik Simple notification Service. Pilih topik dari sisi kiri dan klik tombol Buat topik baru.

Kami telah membuat topik yang disebut displaytrailuntuk mempublikasikan topik. Detailnya akan disimpan di S3bucket yang dibuat di atas.

Buat Jejak di Cloudtrail dan Tetapkan bucket S3 dan layanan SNS

Buka konsol AWS dan klik CloudTrail layanan dari alat Manajemen seperti yang ditunjukkan -

Klik Trails dari sisi kiri seperti yang ditunjukkan di bawah ini -

Klik Create Trailtombol. MasukkanTrail name, Apply trail to all regions dan pilih Yes. Kemudian Jadi log akan diterapkan untuk semua wilayah.

Untuk Read/Write events, pilih All. TambahkanS3 bucket dan SNS topicdetail seperti yang ditunjukkan di bawah ini. Anda dapat membuat yang baru di sini atau menambahkan yang sudah ada.

Perhatikan bahwa ada opsi yang tersedia untuk encrypt log files, enable log file validation, send sns notification for every log file deliverydll. Saya telah menggunakan nilai default di sini. Anda dapat mengizinkan enkripsi file dan itu akan meminta kunci enkripsi. Klik pada tombol Buat Jejak setelah detail ditambahkan.

Buat Peran IAM dengan Izin

Buka konsol AWS dan pilih IAM. Buat peran dengan izin untuk S3, Lambda, CloudTrail, dan SES untuk mengirim email. Peran yang dibuat seperti yang ditunjukkan di bawah ini -

Buat Fungsi AWS Lambda

Buka layanan AWS dan klik Lambdalayanan. Tambahkan nama fungsi, pilih runtime sebagainodejs, dan pilih peran yang dibuat untuk fungsi lambda. Berikut adalah fungsi lambda yang dibuat.

Konfigurasi AWS Lambda

Selanjutnya, kita perlu menambahkan S3 sebagai pemicu untuk pembuatan AWS lambda.

Tambahkan detail bucket S3 untuk menambahkan pemicu dan menambahkan kode AWS Lambda berikut -

const aws =  require("aws-sdk");
const sns = new aws.SNS({
region:'us-east-1'
});
var ses = new aws.SES({
   region: 'us-east-1'
});
exports.handler = function(event, context, callback) {
   console.log("AWS lambda and SNS trigger ");
   console.log(event);
   const s3message = "Bucket Name:"+event.Records[0].s3.bucket.name+"\nLog details:"+event.Records[0].s3.object.key;
   console.log(s3message);
   var eParams = {
      Destination: {
         ToAddresses: ["[email protected]"]
      },
      Message: {
         Body: {
            Text: {
               Data:s3message
            }
         },
         Subject: {
            Data: "cloudtrail logs"
         }
      },
      Source: "[email protected]"
   };
   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");
      }
   });
};

Perhatikan bahwa kami mengambil bucket S3 dan detail log dari acara tersebut dan mengirim email menggunakan layanan SES seperti yang ditunjukkan di atas.

Kapan pun aktivitas apa pun terjadi di konsol AWS, log akan dikirim ke bucket S3 dan pada saat yang sama, AWS lambda akan dipicu dan email akan dikirim ke id email yang disebutkan dalam kode.

Perhatikan bahwa Anda dapat memproses log sesuai kebutuhan Anda di AWS Lambda.