0
0
Lập trình
Flame Kris
Flame Krisbacodekiller

Kiro: Từ Ý Tưởng đến API Khách Hàng Nhờ Vibe Coding

Đăng vào 5 ngày trước

• 7 phút đọc

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àng
    • GET /customers/{custId} – Lấy thông tin khách hàng cụ thể
    • POST /customers – Tạo một khách hàng mới
    • PUT /customers/{custId} – Cập nhật thông tin khách hàng hiện tại
    • DELETE /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:

Kiến trúc tổng quan

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 Copy
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 Copy
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 Copy
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!

Watch the video here

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í.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào