Giới thiệu về Mô hình ứng dụng AWS Serverless
AWS Serverless Application Model (SAM) là một khung nguồn mở được thiết kế để đơn giản hóa việc phát triển, quản lý và triển khai các ứng dụng serverless trên đám mây AWS. Nó mở rộng AWS CloudFormation để cung cấp một cách hợp lý hóa việc xác định tài nguyên serverless, chẳng hạn như hàm AWS Lambda, API Amazon API Gateway và bảng Amazon DynamoDB, mà ứng dụng serverless của bạn yêu cầu. AWS SAM bao gồm một đặc tả mẫu ở định dạng YAML hoặc JSON để xác định tài nguyên và cho phép tạo và kết nối tài nguyên serverless một cách tự động.
Bằng cách sử dụng AWS SAM, các nhà phát triển có thể đẩy nhanh quá trình phát triển ứng dụng serverless và tập trung hơn vào việc viết logic ứng dụng. Ngoài ra, AWS SAM tích hợp liền mạch với các dịch vụ AWS khác và công cụ dành cho nhà phát triển, giúp các nhóm phát triển ứng dụng serverless dễ dàng hơn trong một môi trường nhất quán. Nó cũng cho phép các nhà phát triển thử nghiệm, gỡ lỗi và triển khai các ứng dụng serverless cục bộ hoặc từ xa.
Các tính năng chính của AWS SAM
AWS SAM đi kèm với một tập hợp các tính năng mạnh mẽ giúp phát triển ứng dụng serverless hiệu quả hơn và không gặp rắc rối:
- Cấu hình triển khai một lần: AWS SAM đơn giản hóa việc triển khai serverless bằng cách cho phép các nhà phát triển xác định ứng dụng serverless và tài nguyên của ứng dụng đó trong một tệp mẫu duy nhất. AWS CloudFormation tự động cung cấp và đặt cấu hình các tài nguyên cần thiết khi mẫu được triển khai.
- Thử nghiệm và gỡ lỗi cục bộ: Với AWS SAM CLI, các nhà phát triển có thể chạy và gỡ lỗi cục bộ các ứng dụng serverless trước khi triển khai chúng lên đám mây. Điều này đảm bảo rằng cấu hình tài nguyên và logic của ứng dụng hoạt động chính xác trước khi được đẩy sang môi trường trực tiếp.
- Các phương pháp hay nhất tích hợp sẵn: Các mẫu AWS SAM có một số phương pháp hay nhất tích hợp sẵn, chẳng hạn như cú pháp đơn giản hóa, hỗ trợ CORS và cắt bớt trường cũng như quản lý tự động các chính sách tài nguyên. Những phương pháp hay nhất này giúp các nhà phát triển tuân theo các nguyên tắc của AWS và ngăn chặn các sự cố ứng dụng serverless phổ biến.
- Mẫu chính sách: AWS SAM bao gồm các mẫu chính sách mà nhà phát triển có thể sử dụng để quản lý quyền truy cập tài nguyên trong các ứng dụng serverless của họ. Bằng cách sử dụng các mẫu chính sách này, các phương pháp hay nhất về bảo mật được đưa vào theo mặc định, giúp đơn giản hóa đáng kể việc tạo và quản lý các chính sách IAM.
- Hỗ trợ nhiều dịch vụ AWS khác nhau: Các mẫu AWS SAM có thể xác định tài nguyên cho nhiều dịch vụ AWS, chẳng hạn như Lambda, API Gateway, DynamoDB, CloudWatch Events và Dịch vụ thông báo đơn giản (SNS). Hỗ trợ này tạo điều kiện thuận lợi cho việc tích hợp các dịch vụ khác nhau để tạo các ứng dụng serverless phức tạp, giàu tính năng.
Lợi ích của việc sử dụng AWS SAM để phát triển ứng dụng Serverless
Sử dụng AWS SAM để phát triển ứng dụng serverless mang lại nhiều lợi ích cho nhà phát triển và tổ chức:
- Triển khai đơn giản hóa: AWS SAM giảm độ phức tạp của việc triển khai serverless bằng cách tự động cung cấp và định cấu hình các tài nguyên cần thiết dựa trên một tệp mẫu duy nhất. Sự đơn giản hóa này cho phép các nhà phát triển tập trung vào việc viết logic ứng dụng hơn là quản lý cơ sở hạ tầng.
- Giảm thời gian phát triển: AWS SAM cung cấp một quy trình phát triển hợp lý cho các ứng dụng serverless, dẫn đến chu kỳ phát triển nhanh hơn và sử dụng tài nguyên hiệu quả hơn, điều này rất quan trọng trong một ngành đang phát triển nhanh chóng.
- Môi trường phát triển nhất quán: AWS SAM tích hợp với nhiều dịch vụ AWS, công cụ và IDE khác nhau, cho phép quy trình làm việc nhất quán giữa các nhóm và giai đoạn phát triển khác nhau, từ tạo và thử nghiệm đến tích hợp và triển khai liên tục.
- Hiệu quả chi phí: Bằng cách sử dụng mô hình định giá trả theo mức sử dụng của AWS, các ứng dụng serverless được phát triển bằng AWS SAM có thể giảm chi phí cơ sở hạ tầng, vì người dùng chỉ cần trả tiền cho các tài nguyên thực tế mà ứng dụng của họ sử dụng thay vì các tài nguyên được phân bổ trước.
- Mở rộng khả năng với mã tùy chỉnh: Mặc dù AWS SAM đơn giản hóa quy trình phát triển, nhưng AWS SAM cũng cung cấp tính linh hoạt để mở rộng khả năng của mình với mã tùy chỉnh, cho phép các nhà phát triển điều chỉnh các ứng dụng serverless theo nhu cầu cụ thể của họ.
AWS SAM mang lại sự đơn giản, hiệu quả và tiết kiệm chi phí cho hoạt động phát triển ứng dụng serverless. Nó tối đa hóa tiềm năng của điện toán không có máy chủ, cho phép các nhà phát triển tập trung nhiều hơn vào việc tạo ra các ứng dụng tuyệt vời và ít hơn vào việc quản lý cơ sở hạ tầng.
Bắt đầu với AWS SAM
Để bắt đầu sử dụng AWS Serverless Application Model (SAM), bạn cần có tài khoản AWS và cài đặt AWS CLI và AWS SAM CLI trên máy của mình. Đảm bảo định cấu hình AWS CLI bằng thông tin xác thực của bạn trước khi tiếp tục. Khi bạn đã thiết lập mọi thứ, bạn có thể làm theo các bước bên dưới:
- Tạo một thư mục dự án mới: Sử dụng thiết bị đầu cuối (hoặc dấu nhắc lệnh) để tạo một thư mục mới cho ứng dụng serverless của bạn. Điều hướng đến thư mục để tiến hành thiết lập.
- Khởi tạo ứng dụng AWS SAM của bạn: Chạy lệnh sau trong thiết bị đầu cuối của bạn:
khởi tạo sam
Lệnh này khởi tạo ứng dụng SAM mới, cung cấp cho bạn tệp template.yaml và thư mục mã có hàm Lambda mẫu. Bạn có thể chọn thời gian chạy cho chức năng serverless của mình từ các tùy chọn đã cho (ví dụ: Node.js, Python , Go) và chọn một mẫu cho ứng dụng của bạn.
- Khám phá các tệp đã tạo: Mở thư mục dự án trong trình chỉnh sửa mã ưa thích của bạn và xem lại các tệp đã tạo để hiểu rõ hơn về cấu trúc mẫu và hàm Lambda.
- Tạo và định cấu hình tài nguyên bổ sung: Sử dụng tệp template.yaml để xác định tài nguyên mà ứng dụng serverless của bạn yêu cầu, chẳng hạn như API, cơ sở dữ liệu và sự kiện. Bạn cũng có thể sửa đổi hàm Lambda mẫu để triển khai logic của riêng mình.
- Kiểm tra cục bộ ứng dụng serverless của bạn: Sử dụng AWS SAM CLI để kiểm tra và gỡ lỗi cục bộ ứng dụng serverless của bạn trước khi triển khai ứng dụng đó lên đám mây AWS. Chạy lệnh sau trong terminal:
gọi địa phương sam
Lệnh này gọi chức năng serverless của bạn và hiển thị đầu ra, cho phép bạn gỡ lỗi và kiểm tra ứng dụng của mình.
- Triển khai ứng dụng serverless của bạn: Sau khi bạn đã thử nghiệm cục bộ ứng dụng của mình, hãy sử dụng lệnh sau để đóng gói và triển khai ứng dụng đó lên AWS CloudFormation:
gói sam --s3-xô tên-s3-xô của bạn sam triển khai --template-file template.yaml --stack-name your-stack-name --capabilities CAPABILITY_IAM
Thay thế <i>your-s3-bucket-name</i>
, <i>template.yaml</i>
và <i>your-stack-name</i>
bằng các giá trị phù hợp. CAPABILITY_IAM cho phép AWS CloudFormation tạo các vai trò IAM cần thiết cho ứng dụng serverless của bạn.
Khi ứng dụng serverless của bạn được triển khai, AWS CloudFormation cung cấp tất cả các tài nguyên được xác định trong tệp template.yaml và bạn có thể bắt đầu sử dụng ứng dụng của mình.
AWS SAM CLI
Giao diện dòng lệnh mô hình ứng dụng phi máy chủ AWS (SAM CLI) rất cần thiết để phát triển, thử nghiệm và triển khai các ứng dụng phi máy chủ. Nó cung cấp một bộ lệnh phong phú cho phép bạn quản lý các ứng dụng serverless của mình một cách hiệu quả. Sau đây là một số lệnh AWS SAM CLI thường được sử dụng:
- sam init: Khởi tạo ứng dụng serverless mới được định cấu hình sẵn bằng tệp template.yaml và hàm Lambda mẫu.
- sam build: Xây dựng ứng dụng serverless của bạn, đóng gói mã hàm Lambda và các thành phần phụ thuộc của nó.
- sam gọi cục bộ: Gọi cục bộ ứng dụng serverless của bạn, cho phép bạn kiểm tra và gỡ lỗi ứng dụng.
- sam local start-api: Bắt đầu Cổng API cục bộ cho ứng dụng không có máy chủ của bạn, cho phép bạn kiểm tra các API của ứng dụng không có máy chủ của mình.
- gói sam: Đóng gói mã và các thành phần phụ thuộc của ứng dụng serverless của bạn và tải nó lên bộ chứa Amazon S3.
- triển khai sam: Triển khai ứng dụng serverless của bạn lên AWS CloudFormation, cung cấp tất cả các tài nguyên được xác định trong tệp template.yaml.
- nhật ký sam: Truy xuất và hiển thị các sự kiện nhật ký từ các hàm Lambda của bạn.
- xác thực sam: Xác thực tệp template.yaml của bạn, đảm bảo rằng tệp được định dạng tốt và tuân theo các phương pháp hay nhất.
Các lệnh này giúp đơn giản hóa quá trình phát triển ứng dụng serverless, giúp dễ dàng xây dựng, thử nghiệm và triển khai các ứng dụng serverless của bạn lên đám mây AWS.
Cấu trúc mẫu AWS SAM
Các mẫu AWS SAM là các tệp YAML hoặc JSON xác định tài nguyên, thuộc tính và cấu hình của ứng dụng serverless của bạn. Các mẫu đóng vai trò là bản thiết kế cho cơ sở hạ tầng ứng dụng của bạn, cho phép bạn tạo phiên bản, sao chép và chia sẻ các ứng dụng serverless của mình một cách dễ dàng. Dưới đây là tổng quan về các thành phần chính của mẫu AWS SAM điển hình:
- AWSTemplateFormatVersion: Phiên bản định dạng mẫu bạn đang sử dụng (tùy chọn).
- Chuyển đổi: Phiên bản mẫu AWS SAM. Sử dụng “AWS::Serverless-2016-10-31” cho thuộc tính này.
- Tài nguyên: Tài nguyên serverless và thuộc tính của chúng. Trong phần này, bạn xác định các hàm AWS Lambda, API Gateway và các tài nguyên AWS phụ thuộc khác cần thiết cho ứng dụng của bạn. Mỗi tài nguyên được gán một tên tài nguyên logic và bạn có thể tham chiếu tên này trong các phần khác của mẫu.
- Tham số: Một tập hợp các tham số đầu vào mà bạn muốn cung cấp cho mẫu (tùy chọn).
- Đầu ra: Một tập hợp các giá trị đầu ra mà bạn muốn hiển thị cho các mẫu AWS SAM khác hoặc ngăn xếp AWS CloudFormation (tùy chọn).
- Globals: Phần nơi bạn có thể xác định cài đặt chung cho tất cả các tài nguyên AWS::Serverless::Function trong mẫu (tùy chọn).
- Điều kiện: Một tập hợp các điều kiện mà bạn có thể sử dụng để tùy chỉnh các thuộc tính của tài nguyên dựa trên các tham số đầu vào hoặc tài nguyên hiện có (tùy chọn).
Khi xác định tài nguyên, bạn có thể sử dụng nhiều loại tài nguyên dành riêng cho AWS, chẳng hạn như:
- AWS::Serverless::Function
- AWS::Không có máy chủ::Api
- AWS::Serverless::SimpleTable
- AWS::Serverless::HttpApi
Ngoài ra, bạn có thể sử dụng các loại tài nguyên tùy chỉnh do tiện ích mở rộng AWS SAM của bên thứ ba cung cấp. AWS CloudFormation đọc và diễn giải các mẫu, sau đó cung cấp các tài nguyên cần thiết dựa trên khai báo của bạn.
Bây giờ bạn đã hiểu rõ hơn về cấu trúc mẫu AWS SAM, hãy tiến hành sửa đổi tệp template.yaml của bạn để xác định tài nguyên, thuộc tính và cấu hình ứng dụng serverless của bạn. Điều này sẽ đảm bảo rằng ứng dụng của bạn được xây dựng, thử nghiệm và triển khai phù hợp với các phương pháp hay nhất của AWS.
Tài nguyên mẫu AWS SAM
Trong AWS SAM, các mẫu xác định tài nguyên của ứng dụng serverless, bao gồm các hàm AWS Lambda, API Amazon API Gateway và bảng Amazon DynamoDB. Các mẫu là các tệp JSON hoặc YAML có thể được triển khai bằng AWS CloudFormation. AWS SAM cung cấp nhiều loại tài nguyên khác nhau cho ứng dụng serverless, chẳng hạn như:
AWS::Serverless::Function
Loại tài nguyên này đại diện cho một hàm Lambda trong ứng dụng serverless. Bạn có thể xác định các thuộc tính như thời gian chạy, trình xử lý, nguồn mã và các sự kiện liên quan. Ví dụ:
Resources: LambdaFunction: Type: AWS::Serverless::Function Properties: Runtime: nodejs14.x Handler: index.handler CodeUri: ./src Events: Api: Type: Api Properties: Path: /example Method: GET
AWS::Không có máy chủ::Api
Loại tài nguyên này đại diện cho API REST của Cổng API. Bạn có thể xác định các thuộc tính như nghệ danh, xác thực và cài đặt phương thức. Ví dụ:
Resources: ApiGatewayApi: Type: AWS::Serverless::Api Properties: StageName: prod EndpointConfiguration: REGIONAL
AWS::Không có máy chủ::HTTPApi
Loại tài nguyên này đại diện cho API API Cổng API. Với các API HTTP, bạn có thể xây dựng các API có độ trễ thấp và tiết kiệm chi phí, bao gồm cả WebSockets. Ví dụ:
Resources: HttpApi: Type: AWS::Serverless::HTTPApi Properties: StageName: prod
AWS::Serverless::SimpleTable
Loại tài nguyên này đại diện cho một bảng DynamoDB. Bạn có thể xác định các thuộc tính như khóa chính và định nghĩa thuộc tính. Ví dụ:
Resources: DynamoDbTable: Type: AWS::Serverless::SimpleTable Properties: PrimaryKey: Name: id Type: String
Các tài nguyên AWS SAM khác bao gồm AWS::Serverless::StateMachine (AWS Step Functions), AWS::Serverless::Application (các ứng dụng lồng nhau) và AWS::Serverless::LayerVersion (các lớp Lambda).
Các phương pháp hay nhất để sử dụng AWS SAM
Tuân thủ các biện pháp thực hành tốt nhất trong khi sử dụng AWS SAM đảm bảo triển khai và quản lý hiệu quả các ứng dụng serverless. Dưới đây là một số khuyến nghị:
- Mô đun hóa các chức năng và mẫu của bạn
Sắp xếp ứng dụng serverless của bạn bằng cách tạo các hàm và mẫu Lambda riêng biệt cho từng tính năng hoặc dịch vụ. Điều này cho phép bảo trì dễ dàng hơn và phân tách các mối quan tâm tốt hơn. - Sử dụng các mẫu chính sách AWS SAM
AWS SAM cung cấp các mẫu chính sách được xác định trước để giúp bạn quản lý các chính sách IAM cho ứng dụng serverless của mình. Tận dụng các mẫu này để đảm bảo một bộ quyền nhất quán và an toàn cho tài nguyên của bạn. - Quản lý phụ thuộc hiệu quả
Tổ chức các phần phụ thuộc một cách hiệu quả bằng cách sử dụng các trình quản lý gói như npm hoặc pip. Điều này cho phép kiểm soát phiên bản tốt hơn và giảm nguy cơ xung đột trong các phần phụ thuộc. - Xác thực và kiểm tra các ứng dụng serverless của bạn
Sử dụng AWS SAM CLI để xác thực và kiểm tra cục bộ các ứng dụng serverless trước khi triển khai chúng lên đám mây AWS. Điều này giúp xác định sớm các vấn đề và đảm bảo quá trình triển khai diễn ra suôn sẻ hơn. - Tối ưu hóa hiệu suất và giảm chi phí
Phân tích và giám sát hiệu suất của ứng dụng serverless của bạn bằng các công cụ như AWS X-Ray và Amazon CloudWatch. Tối ưu hóa ứng dụng bằng cách định cấu hình kích thước bộ nhớ, thời gian chờ và cài đặt đồng thời của hàm Lambda.
Tích hợp AWS SAM với AppMaster.io
AppMaster.io , một nền tảng không cần mã mạnh mẽ để tạo các ứng dụng phụ trợ, web và di động, có thể được tích hợp với AWS SAM để tận dụng các tính năng không cần máy chủ của nó. Kết nối AppMaster.io với AWS SAM mang lại nhiều lợi ích:
- Sử dụng AppMaster.io để thiết kế ứng dụng serverless
Giao diện trực quan của AppMaster.io cho phép dễ dàng tạo các ứng dụng serverless bằng AWS SAM. Không cần viết mã, bạn có thể tạo mô hình dữ liệu, logic nghiệp vụ và endpoints API . - Hưởng lợi từ tài liệu được tạo tự động
Trong khi thiết kế ứng dụng serverless, AppMaster.io tự động tạo tài liệu Swagger (OpenAPI) cho endpoints máy chủ và tập lệnh di chuyển lược đồ cơ sở dữ liệu. Điều này đảm bảo trải nghiệm liền mạch khi làm việc với API AWS SAM. - Tạo các ứng dụng web động và tương tác
Bằng cách sử dụng các tính năng mạnh mẽ của AppMaster.io, bạn có thể phát triển các ứng dụng web tương tác đầy đủ hoạt động trơn tru với AWS SAM. Điều này cho phép tạo ra các ứng dụng có thể mở rộng, hiệu quả và tiết kiệm chi phí. - Tích hợp trình kích hoạt sự kiện AWS Lambda
AppMaster.io cho phép bạn sử dụng trình kích hoạt sự kiện Lambda do AWS SAM tạo, giúp kết nối các chức năng serverless với logic nghiệp vụ của AppMaster.io. Điều này đảm bảo rằng ứng dụng serverless chạy trơn tru và hiệu quả.
Việc tích hợp AppMaster.io với AWS SAM cho phép bạn xây dựng và triển khai các ứng dụng serverless nhanh hơn và hiệu quả hơn, nhờ đó tiết kiệm thời gian và chi phí phát triển .
Phần kết luận
AWS Serverless Application Model (SAM) là một khung thiết yếu giúp đơn giản hóa việc phát triển và triển khai ứng dụng serverless trên Đám mây AWS. Bằng cách tận dụng các tính năng mạnh mẽ của nó, các nhà phát triển có thể hợp lý hóa quy trình của họ, đơn giản hóa việc triển khai và quản lý hiệu quả vòng đời của ứng dụng mà không phải lo lắng về cơ sở hạ tầng máy chủ bên dưới. Sự tích hợp của nó với AWS CloudFormation và AWS SAM CLI cung cấp cho các nhà phát triển một môi trường phát triển toàn diện và nhất quán. Khả năng làm việc với nhiều dịch vụ AWS khác nhau, chẳng hạn như Lambda, API Gateway và DynamoDB, giúp nâng cao hơn nữa tính linh hoạt và khả năng thích ứng của nó. Việc kết hợp các phương pháp hay nhất khi sử dụng AWS SAM có thể dẫn đến các ứng dụng serverless có quy mô và hiệu quả hơn, cuối cùng là tiết kiệm chi phí và cải thiện hiệu suất.
Ngoài ra, nền tảng no-code.io AppMaster có thể hoạt động liền mạch với AWS SAM, mang đến sự kết hợp hoàn hảo giữa lợi thế phát triển no-code và kiến trúc serverless. Sự tích hợp này có thể giúp các doanh nghiệp đạt được thời gian phát triển và triển khai nhanh hơn trong khi vẫn duy trì sự linh hoạt khi nhu cầu của họ phát triển. Khi kiến trúc serverless ngày càng trở nên nổi bật, hiểu biết sâu sắc về khung AWS SAM và các phương pháp thực hành tốt nhất của nó là rất quan trọng đối với các nhà phát triển để duy trì tính cạnh tranh trong ngành ứng dụng dựa trên đám mây hiện đại.