CodeStar Academy
  • Trang chủ
  • Khóa học
  • Lịch khai giảng
  • Blog
  • Liên hệ
  • Trang chủ
  • Khóa học
  • Lịch khai giảng
  • Blog
  • Liên hệ

CI/CD cho Serverless Applications (Phần 1)

  • Tháng Tư 16, 2021
  • Posted by: codestar
  • Category: Uncategorized
Không có phản hồi

Serverless Application Model (SAM)

AWS SAM là một open-source framework được dùng để phát triển ứng dụng serverless trên AWS. Một ứng dụng serverless là một tập hợp các Lamda function, even sources và các resources khác cùng làm việc để thực hiện các tác vụ khác nhau cho một hệ thống. Serverless application không chỉ bao gồm các Lamda function mà còn có các resources khác như APIs, database, event source mappings.
Trong phần này, ta sẽ tìm hiểu cách tạo ra một SAM application và hiểu được cấu trúc của nó.

Cài đặt SAM CLI

https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html

Khởi tạo project

SAM CLI là công cụ giúp chúng ta tạo và quản lý ứng dụng serverless của mình. Ta có thể phát triển ứng dụng từ một trong các example mà SAM cung cấp. Sau đây ta sẽ khởi tạo một template Hello World của SAM
sam init
Nhập 1 để chọn các template của AWS

alt text


Chọn artifact là một file zip đẩy lên S3

Chọn phiên bản nodejs 12.x

Đặt tên cho project

Chọn Hello World Example

Project đã đươck khởi tạo:

Kiến trúc của ứng dụng

Kiến trúc của Hello Word template vừa được khởi tạo khi deploy sẽ bao gồm 1 lambda function, một API gateway cho phép thực thi lambda function tại đường dẫn /hello với GET request. Lambda function sẽ đi kèm vời một IAM role cho phép tương tác với các tài nguyên AWS khác, ví dụ như database.

alt text

SAM templates

SAM template là tài liệu định nghĩa kiến trúc cho ứng dụng serverless của bạn. Mở file template.yaml trong project:

alt text



Bạn có thể nhận ra cú pháp của SAM templates hoàn toàn tương tự AWS Cloudformation. SAM templates được mở rộng từ Cloudformation, vì vậy mọi resource định nghĩa trong Cloudformation có thể dùng được trong SAM templates. Ta cùng tìm hiểu các thành phần của template.

Transform

Trường Transform cho Cloudformation biết cú pháp template này tuân thủ theo AWS Serverless Application Model specification

alt text

Globals

Các thành phần trong Globals định nghĩa các properties chung cho toàn bộ serverless functions và APIs của ứng dụng. Trong ví dụ dưới đây, timeout lambda function được đặt mặc định là 3s.

alt text

Hello World Function

Các dòng dưới đây định nghĩ một Lambda function với một IAM execution role. Nó cũng chỉ ra source của Lambda function được đặt trong forder hello-world. Hàm handler là lambdaHandler trong file app.js

alt text


Chú ý rằng IAM role cho Lambda fuction không được định nghĩa ở đây do SAM sẽ mặc định tạo mới một IAM role. Bạn cũng có thể tự tạo role bằng cách định nghĩa trong Role parameter. Danh sách đầy đủ các parameters cho lambda function ở đây

Event Triggers

Events làm một trong các thuộc tính của function, nó định nghĩa event sẽ trigger Lambda function. Trong ví dụ này, ta đã định nghĩa event từ API gateway với endpoint /hello .

alt text

Outputs

Ta có thể tùy chọn in ra các output sau khi deploy Cloudformation để dễ dàng quản lý và tìm kiếm. Các out này có thể là API gateway URL, resource ARN,…

alt text

Lambda code

function lambdaHandler trong file hello-world/app.js

alt text

Lambda handler

Khi lambda function được trigger, hàm handler sẽ xử lý event nhận được. Sau khi xử lý xong và trả về response, hàm handler sẽ khả dụng cho các event khác.

alt text


Bởi vì Lambda handler sẽ khởi chạy mỗi lần được gọi nên ta sẽ đặt những phần code được sử dụng chung bên ngoài phạm vi của handler. Ta có thể sử dụng Lambda layer để chứa các phần code common, thư viện cho ứng dụng của mình. Ví dụ như khởi tạo kết nối database,…

Còn tiếp…

Tác giả: Nguyễn Đức Hải

Trả lời Hủy

Về chúng tôi

CodeStar hướng đến việc mang lại những trải nghiệm mới cho Học viên trong mỗi buổi học thông qua việc tham gia vào các dự án tại CodeStar

Địa chỉ

Tầng 4, Tòa CT1, Bắc Hà C14, Tố Hữu, Trung Văn, Nam Từ Liêm, Hà Nội.

0367833933

[email protected]

Quick Links

Khóa học

Lịch khai giảng

Kênh Youtube

Liên hệ


Copyright © 2020. CodeStar

Search