12/08/2018, 16:29

Hướng dẫn tạo aws-lambda function sử dụng nodejs

Trong bài viết này mình sẽ giới thiệu về Cách tạo function aws lambda đọc file từ S3 Cách tạo trigger từ S3 thực thi lambda Cách deploy 1 function lambda lên aws sử dụng lambda Bạn chỉ cần vào trong tài khoản aws vào mục lambda, sau đó tạo 1 function Chú ý: Bạn cần phải tạo 1 role cho ...

Trong bài viết này mình sẽ giới thiệu về

  1. Cách tạo function aws lambda đọc file từ S3
  2. Cách tạo trigger từ S3 thực thi lambda
  3. Cách deploy 1 function lambda lên aws sử dụng lambda

Bạn chỉ cần vào trong tài khoản aws vào mục lambda, sau đó tạo 1 function

Chú ý: Bạn cần phải tạo 1 role cho lambda của bạn để có thể access S3

Sau khi tạo xong thì aws sẽ tạo cho bạn 1 sample code

'use strict';

console.log('Loading function');

const aws = require('aws-sdk');

const s3 = new aws.S3({ apiVersion: '2006-03-01' });


exports.handler = (event, context, callback) => {
    //console.log('Received event:', JSON.stringify(event, null, 2));

    // Get the object from the event and show its content type
    const bucket = event.Records[0].s3.bucket.name;
    const key = decodeURIComponent(event.Records[0].s3.object.key.replace(/+/g, ' '));
    const params = {
        Bucket: bucket,
        Key: key,
    };
    s3.getObject(params, (err, data) => {
        if (err) {
            console.log(err);
            const message = `Error getting object ${key} from bucket ${bucket}. Make sure they exist and your bucket is in the same region as this function.`;
            console.log(message);
            callback(message);
        } else {
            console.log('CONTENT TYPE:', data.ContentType);
            callback(null, data.ContentType);
        }
    });
};

Ở code sample trên bạn cần chú ý

  • Tất cả thực thi của lambda sẽ ở trong handler
  • Phần callback khi error hoặc success là cực kỳ quan trọng, vì nó sẽ trả về giá trị cho những thành phần nào đang trigger đến lambda, nếu không gọi callback về thì phần trigger lambda sẽ bị retry, cứ khi hết timeout mà chưa có callback về thì sẽ retry 1 lần, nếu bạn ko có callback thì lambda của bạn sẽ thực thi 3 lần             </div>
            
            <div class=
0