Giới Thiệu
Chào các bạn, tôi là Girish, một AWS Community Builder và người đam mê công nghệ đám mây. Trong bài viết này, tôi sẽ chia sẻ cách tôi đã sử dụng tính năng vibe coding của AWS Kiro để xây dựng một Customer Lookup API được hỗ trợ bởi API Gateway, Lambda, DynamoDB và AWS SAM.
Với vibe coding trong Kiro, bạn có thể lập trình một cách tự nhiên mà không cần phải xác định quá nhiều yêu cầu từ đầu. Điều này rất phù hợp để thử nghiệm, tạo mẫu và chỉ đơn giản là "vibe" với mã.
Thay vì phải kết nối các dịch vụ thủ công, tôi chỉ cần cung cấp cho Kiro một yêu cầu bằng ngôn ngữ tự nhiên mô tả những gì tôi muốn, và chỉ trong vài phút, tôi đã có một nguyên mẫu có thể triển khai. Đó chính là phép màu của vibe coding!
Tôi đã xây dựng gì và tại sao?
Tôi muốn tạo ra một Customer Lookup API nhanh chóng để chứng minh cách mà bạn có thể chuyển từ một ý tưởng đến một giải pháp hoạt động bằng cách sử dụng tính năng vibe coding của Kiro. Thay vì thiết lập các tài nguyên AWS một cách thủ công, tôi đã mô tả các yêu cầu của mình bằng tiếng Anh đơn giản, và Kiro đã tạo ra dự án cho tôi.
Với những gì tôi có:
- Một REST API được lưu trữ trên API Gateway
- API hỗ trợ các thao tác CRUD:
GET /customers
– Liệt kê tất cả khách hàngGET /customers/{custId}
– Lấy thông tin khách hàng cụ thểPOST /customers
– Tạo một khách hàng mớiPUT /customers/{custId}
– Cập nhật thông tin khách hàng hiện tạiDELETE /customers/{custId}
– Xóa một khách hàng
- Một hàm Lambda để xử lý các yêu cầu
- Một bảng DynamoDB để lưu trữ dữ liệu khách hàng (custId, Name, State, Zipcode)
- Một mẫu AWS SAM để xây dựng và triển khai toàn bộ ngăn xếp
- Các sự kiện JSON mẫu có thể được sử dụng để kiểm tra API.
Mục tiêu không phải là xây dựng một API sẵn sàng cho sản xuất ngay lập tức, mà là để có được một nguyên mẫu hoạt động nhanh chóng, thứ mà tôi có thể mở rộng sau này với xác thực, quan sát, giám sát và tối ưu hóa hiệu suất.
Tổng Quan Kiến Trúc
Dưới đây là cái nhìn tổng quan về cách các thành phần hoạt động cùng nhau:
Các Bước Đánh Giá: Từ Yêu Cầu đến Nguyên Mẫu
Bước 1: Bắt Đầu Phiên Vibe Coding
Mở Kiro, chuyển sang chế độ vibe coding và chỉ cần gõ một yêu cầu tự nhiên như:
"Xây dựng một API tra cứu khách hàng dưới dạng REST API. API sẽ được lưu trữ bằng AWS Gateway, tích hợp với một hàm Lambda, dữ liệu sẽ được lưu trữ trong bảng DynamoDB, tạo một bảng đơn giản để lưu trữ dữ liệu này với bốn trường - custId, Name, state, zipcode. Không tạo khung thử nghiệm vì cần có một nguyên mẫu hoạt động nhanh trước khi thêm khung thử nghiệm và hiệu suất. Tôi muốn sử dụng AWS SAM để xây dựng và triển khai giải pháp này."
Kiro đã phản hồi với tôi như sau:
Bước 2: Kiro Tạo Ra Các Tệp Dự Án
Chỉ trong vài giây, Kiro đã sản xuất:
- Một mẫu SAM (template.yaml)
- Một hàm Lambda (app.py)
- Định nghĩa bảng DynamoDB
- Các sự kiện JSON mẫu để kiểm tra API
Mẫu SAM (đơn giản hóa):
yaml
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
CustomersTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: CustomerTable
AttributeDefinitions:
- AttributeName: custId
AttributeType: S
KeySchema:
- AttributeName: custId
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 5
WriteCapacityUnits: 5
Api:
Type: AWS::Serverless::Api
Properties:
StageName: prod
CustomerFunction:
Type: AWS::Serverless::Function
Properties:
Handler: app.lambda_handler
Runtime: python3.8
Policies:
- DynamoDBCrudPolicy:
TableName: !Ref CustomersTable
Events:
Api:
Type: Api
Properties:
RestApiId: !Ref Api
Path: /customers
Method: any
Bước 3: Xem Xét Hàm Lambda
Kiro đã tạo một hàm Python với tích hợp DynamoDB:
python
import json
import boto3
def lambda_handler(event, context):
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('CustomerTable')
if event['httpMethod'] == 'GET':
# Xử lý GET request
# ...
elif event['httpMethod'] == 'POST':
# Xử lý POST request
# ...
# Thêm các xử lý khác
Bước 4: Xây Dựng & Triển Khai với SAM
Khi tôi đã xem xét các tệp, chỉ còn lại là xây dựng và triển khai.
Sử dụng lệnh sau để xây dựng hàm:
Lệnh: sam build
Bạn có thể triển khai nó lên AWS Cloud bằng lệnh:
Lệnh: sam deploy
Thay Đổi Tập Hợp
SAM đã đóng gói và triển khai các tài nguyên API Gateway, Lambda và DynamoDB trong tài khoản AWS của tôi.
Bước 5: Kiểm Tra API
Bây giờ tôi đã có điểm cuối API, tôi sẽ sử dụng Postman để gọi API và xem xét phản hồi.
Trước khi tôi gọi yêu cầu GET, tôi sẽ sử dụng dòng lệnh để POST một bản ghi qua API sẽ được lưu trữ trong bảng DynamoDB CustomerTable.
Lệnh:
bash
curl -X POST https://21374mswxh.execute-api.us-east-2.amazonaws.com/prod/customers \\
-H "Content-Type: application/json" \\
-d '{"custId":"CUST001", "name":"Girish", "state":"NY", "zipcode":"10001"}'
Bây giờ tôi sẽ gọi GET trên điểm cuối API này bằng Postman. Điều này sẽ trả về bản ghi mà tôi đã thêm vào cơ sở dữ liệu.
Đây là một API CRUD, vì vậy nó cũng hỗ trợ các thao tác khác. Tuy nhiên, trong bài trình bày này, tôi đã tập trung vào các yêu cầu POST và GET để tạo một bản ghi và lấy một bản ghi thông qua điểm cuối API.
Dọn Dẹp Tài Nguyên
Để tránh bị tính phí, đừng quên dọn dẹp:
Vì các tài nguyên này được xây dựng và triển khai bằng AWS SAM, chúng có thể được xóa bằng lệnh AWS SAM.
Lệnh: sam delete
Kết Luận
Trong bài viết này, tôi đã chứng minh cách Kiro đã giúp tôi dễ dàng tạo ra một REST API CRUD Customer Lookup hoàn chỉnh tích hợp với cơ sở dữ liệu, sử dụng vibe coding để nhanh chóng xây dựng một nguyên mẫu hoạt động.
Không chỉ API được tạo ra, mà còn một mẫu AWS SAM cũng đã được tạo ra để hỗ trợ các kịch bản tạo, cập nhật, xóa và tái tạo với Infrastructure as Code.
AI tạo sinh đang chuyển đổi cách mà mã được xây dựng, và các công cụ như Kiro làm cho quy trình này trở nên dễ dàng hơn. Dù việc gỡ lỗi có thể trở nên khó khăn hơn khi nhiều mã được tạo ra với GenAI, nhưng các tính năng của Kiro như phát triển dựa trên thông số và tạo tài liệu thiết kế có thể giúp giải quyết những thách thức này.
Tôi tin rằng đây chỉ là sự khởi đầu, và những công cụ này sẽ tiếp tục phát triển nhanh chóng!
Hy vọng rằng bạn thấy bài viết này hữu ích và thông tin.
Cảm ơn bạn đã đọc!
Câu Hỏi Thường Gặp (FAQ)
Vibe coding là gì?
Vibe coding là một tính năng cho phép bạn lập trình bằng cách mô tả yêu cầu bằng ngôn ngữ tự nhiên, giúp tiết kiệm thời gian và nỗ lực.
Tôi có thể sử dụng Kiro cho các dự án lớn không?
Có, Kiro rất linh hoạt và có thể mở rộng, phù hợp cho cả các dự án nhỏ và lớn.
Làm thế nào để dọn dẹp tài nguyên trong AWS?
Bạn có thể dọn dẹp tài nguyên bằng cách sử dụng lệnh sam delete
để tránh bị tính phí.