Sử dụng Hàm Lambda với Amazon S3

Dịch vụ Amazon S3 được sử dụng để lưu trữ tệp, nơi bạn có thể tải lên hoặc xóa tệp. Chúng tôi có thể kích hoạt AWS Lambda trên S3 khi có bất kỳ tải lên tệp nào trong nhóm S3. AWS Lambda có một hàm xử lý hoạt động như một điểm bắt đầu cho hàm AWS Lambda. Trình xử lý có các chi tiết của các sự kiện. Trong chương này, chúng ta hãy xem cách sử dụng AWS S3 để kích hoạt chức năng AWS Lambda khi chúng tôi tải lên tệp trong nhóm S3.

Các bước sử dụng Hàm AWS Lambda với Amazon S3

Để bắt đầu sử dụng AWS Lambda với Amazon S3, chúng tôi cần những điều sau:

  • Tạo nhóm S3
  • Tạo vai trò có quyền hoạt động với s3 và lambda
  • Tạo hàm lambda và thêm s3 làm trình kích hoạt.

Thí dụ

Hãy để chúng tôi xem các bước này với sự trợ giúp của ví dụ cho thấy sự tương tác cơ bản giữa Amazon S3 và AWS Lambda.

  • Người dùng sẽ tải lên một tệp trong nhóm Amazon S3

  • Khi tệp được tải lên, nó sẽ kích hoạt chức năng AWS Lambda ở chế độ nền, chức năng này sẽ hiển thị đầu ra dưới dạng thông báo trên bảng điều khiển cho biết tệp đã được tải lên.

  • Người dùng sẽ có thể thấy thông báo trong nhật ký Cloudwatch sau khi tệp được tải lên.

Sơ đồ khối giải thích quy trình của ví dụ được hiển thị ở đây:

Tạo Nhóm S3

Trước tiên, chúng ta hãy bắt đầu bằng cách tạo nhóm s3 trong bảng điều khiển AWS bằng cách sử dụng các bước dưới đây:

Bước 1

Đi tới các dịch vụ của Amazon và nhấp vào S3 trong phần lưu trữ như được đánh dấu trong hình ảnh dưới đây -

Bước 2

Nhấp vào bộ nhớ S3 và Create bucket sẽ lưu trữ các tệp đã tải lên.

Bước 3

Khi bạn nhấp vào Create bucket , bạn có thể thấy một màn hình như sau:

Bước 4

Nhập chi tiết Bucket name, Select the Region và bấm vào Createở dưới cùng bên trái. Do đó, chúng tôi đã tạo nhóm với tên:workingwithlambdaands3.

Bước 5

Bây giờ, hãy nhấp vào tên nhóm và nó sẽ yêu cầu bạn tải lên các tệp như hình dưới đây -

Như vậy, chúng ta đã hoàn thành việc tạo nhóm trong S3.

Tạo vai trò hoạt động với S3 và Lambda

Để tạo vai trò hoạt động với S3 và Lambda, vui lòng làm theo các Bước dưới đây -

Bước 1

Đi tới dịch vụ AWS và chọn IAM như hình dưới đây -

Bước 2

Bây giờ, hãy nhấp vào IAM -> Roles như hình dưới đây -

Bước 3

Bây giờ, hãy nhấp vào Create rolevà chọn các dịch vụ sẽ sử dụng vai trò này. Chọn Lambda và nhấp vàoPermission cái nút.

Bước 4

Thêm quyền từ bên dưới và nhấp vào Review.

Bước 5

Quan sát rằng chúng tôi đã chọn các quyền sau:

Lưu ý rằng các Chính sách mà chúng tôi đã chọn là AmazonS3FullAccess, AWSLambdaFullAccessCloudWatchFullAccess.

Bước 6

Bây giờ, hãy nhập Tên vai trò, Mô tả vai trò và nhấp vào Create Role ở dưới cùng.

Vì vậy, vai trò của chúng tôi có tên lambdawiths3service được tạo ra.

Tạo hàm Lambda và thêm trình kích hoạt S3

Trong phần này, chúng ta hãy xem cách tạo một hàm Lambda và thêm một trình kích hoạt S3 vào nó. Với mục đích này, bạn sẽ phải làm theo các Bước dưới đây -

Bước 1

Chuyển đến Dịch vụ AWS và chọn Lambda như hình dưới đây -

Bước 2

Nhấp chuột Lambda và làm theo quy trình để thêm Name. ChọnRuntime, Rolevv và tạo chức năng. Hàm Lambda mà chúng tôi đã tạo được hiển thị trong ảnh chụp màn hình bên dưới -

Bước 3

Bây giờ chúng ta hãy thêm trình kích hoạt S3.

Bước 4

Chọn trình kích hoạt từ phía trên và thêm các chi tiết như được hiển thị bên dưới -

Bước 5

Chọn nhóm được tạo từ trình đơn thả xuống của nhóm. Loại sự kiện có các chi tiết sau:

Lựa chọn Object Created (All), vì chúng tôi cần trình kích hoạt AWS Lambda khi tệp được tải lên, bị xóa, v.v.

Bước 6

Bạn có thể thêm Tiền tố và Mẫu tệp được sử dụng để lọc các tệp được thêm vào. Ví dụ, để kích hoạt lambda chỉ cho hình ảnh .jpg. Bây giờ hãy để trống vì chúng ta cần kích hoạt Lambda cho tất cả các tệp được tải lên. Nhấp chuộtAdd để thêm trình kích hoạt.

Bước 7

Bạn có thể tìm thấy màn hình kích hoạt cho hàm Lambda như hình dưới đây:

Hãy thêm các chi tiết cho hàm aws lambda. Ở đây, chúng tôi sẽ sử dụng trình chỉnh sửa trực tuyến để thêm mã của chúng tôi và sử dụng nodejs làm môi trường thời gian chạy.

Bước 8

Để kích hoạt S3 với AWS Lambda, chúng ta sẽ phải sử dụng sự kiện S3 trong đoạn mã như hình dưới đây -

exports.handler = function(event, context, callback) {
   console.log("Incoming Event: ", event);
   const bucket = event.Records[0].s3.bucket.name;
   const filename = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
   const message = `File is uploaded in - ${bucket} -> ${filename}`;
   console.log(message);
   callback(null, message);
};

Lưu ý rằng tham số sự kiện có các chi tiết của S3event. Chúng tôi đã an ủi rằng tên thùng và tên tệp sẽ được ghi lại khi bạn tải lên hình ảnh trong S3bucket.

Bước 9

Bây giờ, chúng ta hãy lưu các thay đổi và kiểm tra hàm lambda với S3upload. Sau đây là các chi tiết mã được thêm vào AWS Lambda:

Bước 10

Bây giờ, chúng ta hãy thêm vai trò, bộ nhớ và thời gian chờ.

Bước 11

Bây giờ, hãy lưu hàm Lambda. Mở S3 từ các dịch vụ của Amazon và mở nhóm mà chúng tôi đã tạo trước đó, cụ thể làworkingwithlambdaands3.

Tải lên hình ảnh trong đó như hình dưới đây -

Bước 12

Nhấp chuột Upload để thêm tệp như được hiển thị -

Bước 13

Nhấp chuột Add filesđể thêm tệp. Bạn cũng có thể kéo và thả các tệp. Bây giờ, hãy nhấp vàoUpload cái nút.

Do đó, chúng tôi đã tải lên một hình ảnh trong nhóm S3 của mình.

Bước 14

Để xem chi tiết kích hoạt, hãy chuyển đến dịch vụ AWS và chọn CloudWatch. Mở nhật ký cho hàm Lambda và sử dụng mã sau:

exports.handler = function(event, context, callback) {
   console.log("Incoming Event: ", event);
   const bucket = event.Records[0].s3.bucket.name;
   const filename = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
   const message = `File is uploaded in - ${bucket} -> ${filename}`;
   console.log(message);
   callback(null, message);
};

Đầu ra bạn có thể quan sát trong Cloudwatch như được hiển thị:

Chức năng AWS Lambda được kích hoạt khi tệp được tải lên trong nhóm S3 và thông tin chi tiết được đăng nhập vào Cloudwatch như hình dưới đây -