Bài đăng này được viết bởi Kurt Tometich, Senior Solutions Architect tại AWS.
Từ cuối năm 2018, các nhà phát triển đã sử dụng AWS Serverless Application Model (AWS SAM) để tối ưu hóa quá trình phát triển các ứng dụng serverless với AWS. Ngoài việc giúp đơn giản hóa việc tạo, xây dựng, kiểm tra và triển khai các ứng dụng serverless, AWS SAM giờ đây còn đơn giản hóa quản lý quyền hạn giữa các thành phần serverless thông qua AWS SAM Connectors.
Connectors cho phép người xây dựng tập trung vào các mối quan hệ giữa các thành phần mà không cần chuyên môn về AWS Identity and Access Management (IAM) hoặc tạo ra các chính sách tùy chỉnh. AWS SAM connector hỗ trợ AWS Step Functions, Amazon DynamoDB, AWS Lambda, Amazon SQS, Amazon SNS, Amazon API Gateway, Amazon EventBridge và Amazon S3, với kế hoạch hỗ trợ thêm các tài nguyên khác trong tương lai.
Mẫu chính sách AWS SAM là tính năng hiện có giúp người xây dựng triển khai các ứng dụng serverless với các chính sách IAM được phân quyền một cách tối thiểu. Bởi vì có một số mẫu giới hạn, chúng rất phù hợp khi có mẫu cho các dịch vụ bạn đang sử dụng. Connectors là tốt nhất cho những người mới bắt đầu và muốn tập trung vào việc mô hình hóa dòng dữ liệu và sự kiện trong các ứng dụng của họ. Connectors sẽ lấy mô hình quan hệ mong muốn và tạo ra các quyền hạn để mối quan hệ tồn tại và hoạt động như ý muốn.
Trong bài đăng này, tôi sẽ hướng dẫn cho bạn cách tăng tốc phát triển serverless trong khi vẫn giữ các thực tiễn bảo mật an toàn bằng cách sử dụng AWS SAM connector. Định nghĩa một connector trong một mẫu AWS SAM yêu cầu một nguồn, đích và một quyền hạn (ví dụ như đọc hoặc ghi). Từ định nghĩa này, các chính sách IAM với các đặc quyền tối thiểu sẽ được tạo tự động bởi connector.
Usage
Trong một mẫu AWS SAM:
- Tạo định nghĩa tài nguyên serverless.
- Xác định một connector.
- Thêm ID nguồn và đích của các tài nguyên cần kết nối.
- Xác định quyền (đọc, ghi) của kết nối.
Ví dụ này tạo một hàm Lambda yêu cầu quyền ghi vào bảng Amazon DynamoDB để theo dõi các đơn hàng được tạo từ một trang web.

AWS SAM connector cho các tài nguyên có dạng như sau:
YAML
LambdaDynamoDbWriteConnector:
Type: AWS::Serverless::Connector
Properties:
Source:
Id: CreateOrder
Destination:
Id: Orders
Permissions:
– Write
“LambdaDynamoDbWriteConnector” là tên của connector, trong khi “Type” đặt nó là một AWS SAM connector. “Properties” chứa mã ID nguồn và đích cho các tài nguyên serverless được tìm thấy trong AWS SAM template. Cuối cùng, thuộc tính “Permissions” định nghĩa quan hệ đọc hoặc ghi giữa các thành phần.
Ví dụ cơ bản này cho thấy việc định nghĩa quyền giữa các thành phần là rất dễ dàng. Không yêu cầu tên chính sách hoặc vai trò cụ thể nào và cú pháp này là nhất quán trên nhiều thành phần serverless khác, đảm bảo tiêu chuẩn hóa.
Ví dụ
AWS SAM Connectors giúp bạn tiết kiệm thời gian khi ứng dụng của bạn phát triển và các kết nối giữa các thành phần serverless trở nên phức tạp hơn. Việc tạo và quản lý các quyền một cách thủ công trở nên dễ bị lỗi và khó khăn khi áp dụng trên quy mô lớn. Để làm nổi bật tính toàn diện của AWS SAM Connectors, chúng ta sẽ sử dụng một máy trạng thái AWS Step Functions để tương tác với một số thành phần serverless khác. AWS Step Functions là một dịch vụ quản lý quy trình orchestration serverless tích hợp trực tiếp với các dịch vụ AWS khác.
Tổng quan về giải pháp

Giải pháp này triển khai một ống dẫn quản lý danh mục hình ảnh được kiểm duyệt. Amazon Rekognition kiểm tra nội dung không thích hợp và phát hiện các đối tượng và văn bản trong hình ảnh. Nó xử lý các hình ảnh hợp lệ và lưu trữ siêu dữ liệu trong bảng Amazon DynamoDB, nếu không sẽ gửi email thông báo cho các hình ảnh không hợp lệ.
Yêu cầu tiên quyết
- Cài đặt Git
- Cài đặt phiên bản AWS SAM CLI 1.58.0 hoặc cao hơn
Triển khai giải pháp
- Sao chép kho lưu trữ và điều hướng đến thư mục giải pháp:
Bash
git clone https://github.com/aws-samples/step-functions-workflows-collection
cd step-functions-workflows-collection/moderated-image-catalog
- Mở tệp template.yaml nằm ở step-functions-workflows-collection/moderated-image-catalog và thay thế phần “ImageCatalogStateMachine:” bằng đoạn mã sau. Đảm bảo giữ nguyên định dạng YAML.
YAML
ImageCatalogStateMachine:
Type: AWS::Serverless::StateMachine
Properties:
Name: moderated-image-catalog-workflow
DefinitionUri: statemachine/statemachine.asl.json
DefinitionSubstitutions:
CatalogTable: !Ref CatalogTable
ModeratorSNSTopic: !Ref ModeratorSNSTopic
Policies:
– RekognitionDetectOnlyPolicy: {}
- Trong cùng tệp template.yaml, thêm sau phần ModeratorSNSTopic và trước phần Outputs sau đoạn mã sau:
YAML
# Serverless connector permissions
StepFunctionS3ReadConnector:
Type: AWS::Serverless::Connector
Properties:
Source:
Id: ImageCatalogStateMachine
Destination:
Id: IngestionBucket
Permissions:
– Read
StepFunctionDynamoWriteConnector:
Type: AWS::Serverless::Connector
Properties:
Source:
Id: ImageCatalogStateMachine
Destination:
Id: CatalogTable
Permissions:
– Write
StepFunctionSNSWriteConnector:
Type: AWS::Serverless::Connector
Properties:
Source:
Id: ImageCatalogStateMachine
Destination:
Id: ModeratorSNSTopic
Permissions:
– Write
Bạn đã xóa các chính sách dòng cho trạng thái máy và thay thế chúng bằng các định nghĩa AWS SAM connector, trừ chính sách Amazon Rekognition. Vào thời điểm xuất bản bài đăng này, các kết nối không hỗ trợ Amazon Rekognition. Dành thời gian để xem xét cú pháp của mỗi kết nối.
- Triển khai ứng dụng bằng lệnh sau:
Bash
sam deploy –guided
Cung cấp tên ngăn xếp, khu vực và địa chỉ email của người kiểm duyệt. Bạn có thể chấp nhận mặc định cho các lời nhắc còn lại.
Xác minh quyền hạn
Sau khi triển khai xong, bạn có thể xác minh các vai trò và chính sách đúng.
- Truy cập trang dịch vụ Step Functions trong Bảng điều khiển quản lý AWS và đảm bảo rằng bạn đã chọn Địa bàn đúng.
- Chọn State machines từ menu bên trái và sau đó chọn state machine moderated-image-catalog-workflow.
- Chọn liên kết “IAM role ARN”, nó sẽ đưa bạn đến vai trò IAM và các chính sách đã tạo ra.
Bạn nên thấy danh sách các chính sách tương ứng với AWS SAM connectors trong tệp template.yaml với các hành động và tài nguyên.

Bạn không cần cung cấp các hành động chính sách cụ thể: Sử dụng Read hoặc Write như quyền hạn và dịch vụ sẽ xử lý phần còn lại. Điều này dẫn đến khả năng đọc tốt hơn, tiêu chuẩn hóa và năng suất cao hơn, trong khi vẫn giữ các phương pháp bảo mật tốt nhất.
Kiểm thử
- Tải lên một hình ảnh kiểm thử lên bucket Amazon S3 đã tạo trong bước triển khai. Để tìm tên của bucket, truy cập vào bảng điều khiển AWS CloudFormation. Chọn stack CloudFormation qua tên được nhập vào như một phần của “sam deploy –guided”. Chọn tab Outputs và ghi nhớ tên IngestionBucket.
- Sau khi tải lên hình ảnh, truy cập vào bảng điều khiển Step Functions của AWS và chọn workflow “moderated-image-catalog-workflow”.
- Chọn Bắt đầu thực hiện và nhập sự kiện:
JSON
{
“bucket”: “<S3-bucket-name>”,
“key”: “<image-name>.jpeg”
}
- Chọn Bắt đầu thực hiện và quan sát thực thi của quy trình.
- Tùy thuộc vào hình ảnh được chọn, nó sẽ được thêm vào danh mục hình ảnh hoặc gửi một email kiểm duyệt nội dung đến địa chỉ email đã cung cấp. Tìm hiểu thêm về nội dung được coi là không thích hợp bởi Amazon Rekognition
Dọn dẹp
Để xóa bất kỳ hình ảnh nào được thêm vào Amazon S3 bucket và các tài nguyên được tạo bởi mẫu này, sử dụng các lệnh sau từ cùng một thư mục dự án.
Bash
aws s3 rm s3://< bucket_name_here> –recursive
sam delete
Kết luận
Bài đăng trên blog này cho thấy cách AWS SAM connectors đơn giản hóa việc kết nối các thành phần serverless. Xem Hướng dẫn cho nhà phát triển để tìm hiểu thêm về AWS SAM connectors. Để biết thêm các luồng công việc serverless mẫu như trong bài đăng này, hãy xem Serverless Land.
.