Chuyển đến nội dung chính

Amazon Bedrock là gì?

Bạn đang trong buổi Sprint Planning.

Product Owner nói:

"Hay mình thêm AI để trả lời khách hàng tự động nhé?"

Cả phòng im lặng vài giây.

Rồi trong đầu bạn bắt đầu hiện lên hàng loạt câu hỏi:

  • Phải train model à?
  • Thuê GPU ở đâu?
  • Có cần tuyển ML Engineer không?
  • Có phải học Deep Learning trước không?
  • Chắc dự án này kéo dài thêm 6 tháng...

Thực ra, đó cũng chính là vấn đề mà Amazon Bedrock được tạo ra để giải quyết.

Amazon Bedrock là gì

Amazon Bedrock là một Fully Managed Service cung cấp quyền truy cập tới nhiều Foundation Model (FM) từ nhiều nhà cung cấp khác nhau (Anthropic Claude, Meta Llama, Amazon Titan/Nova, Stability AI, Cohere, Mistral...) thông qua một API thống nhất (InvokeModel, InvokeModelWithResponseStream, hoặc qua Converse API).

Về bản chất, Bedrock đóng vai trò là một lớp trừu tượng hóa (abstraction layer) nằm giữa ứng dụng của bạn và hạ tầng inference của các FM. Bạn không thấy GPU, không thấy container, không thấy model server — chỉ thấy một endpoint HTTPS nằm trong region AWS bạn chọn.

Một request cơ bản (ví dụ gọi từ .NET dùng AWS SDK AWSSDK.BedrockRuntime) trông như sau:

flowchart TB User[".NET / Java / Python Application"] Bedrock["Amazon Bedrock"] subgraph "Foundation Models" Claude["Claude"] Llama["Llama"] Titan["Titan"] Mistral["Mistral"] Cohere["Cohere"] Nova["Amazon Nova"] end User -->|"InvokeModel / Converse API"| Bedrock Bedrock --> Claude Bedrock --> Llama Bedrock --> Titan Bedrock --> Mistral Bedrock --> Cohere Bedrock --> Nova
var client = new AmazonBedrockRuntimeClient(RegionEndpoint.APSoutheast1);

var request = new InvokeModelRequest
{
    ModelId = "anthropic.claude-sonnet-4-6-v1:0",
    ContentType = "application/json",
    Body = new MemoryStream(Encoding.UTF8.GetBytes(payloadJson))
};

var response = await client.InvokeModelAsync(request);

Foundation Model là gì?

Đây là khái niệm xuất hiện rất nhiều khi đọc tài liệu về Bedrock.

Foundation Model (FM) là những mô hình AI đã được huấn luyện trên lượng dữ liệu rất lớn.

Bạn có thể hình dung:

  • Claude giống một lập trình viên rất giỏi.
  • Llama là một lập trình viên khác.
  • Titan là lập trình viên do Amazon đào tạo.

Bạn không cần biết họ học như thế nào.

Bạn chỉ cần giao việc.

Prompt
    │
    ▼
Foundation Model
    │
    ▼
Response

Đó cũng là lý do Bedrock giúp các đội Backend tích hợp AI nhanh mà không cần tự huấn luyện mô hình.

Bedrock không dùng API Key?

Đây là điểm mình thích nhất.

Hầu hết dịch vụ AI hiện nay đều sử dụng API Key.

flowchart LR

    App["Application"]

    Key["API Key"]

    AI["AI Service"]

    App --> Key
    Key --> AI

Nếu API Key bị lộ?

  • Bất kỳ ai cũng có thể sử dụng.
  • Phải rotate API Key.
  • Phải lưu Secret.
  • Phải quản lý từng môi trường Development, Staging và Production.

Amazon Bedrock thì khác.

Bedrock sử dụng AWS IAM để xác thực thay vì API Key.


IAM hoạt động như thế nào?

Khi ứng dụng chạy trên AWS (EC2, ECS, EKS hoặc Lambda), ứng dụng sẽ được gán một IAM Role.

IAM Role quyết định:

  • Có được gọi Amazon Bedrock hay không.
  • Được gọi Foundation Model nào.
  • Được gọi ở Region nào.
flowchart LR

    App["ASP.NET Core API"]

    Role["IAM Role"]

    Bedrock["Amazon Bedrock"]

    Claude["Claude"]

    App --> Role
    Role -->|"bedrock:InvokeModel"| Bedrock
    Bedrock --> Claude

Nếu IAM Role không có quyền bedrock:InvokeModel, AWS sẽ từ chối request ngay lập tức.

Điều này giúp doanh nghiệp không cần quản lý API Key và giảm đáng kể rủi ro bị lộ Secret.


Ví dụ IAM Policy

Bạn có thể chỉ cho phép ứng dụng gọi đúng một Foundation Model.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "bedrock:InvokeModel"
      ],
      "Resource": [
        "arn:aws:bedrock:ap-southeast-1::foundation-model/anthropic.claude-sonnet-4"
      ]
    }
  ]
}

Policy trên chỉ cho phép gọi model Claude.

  • Được gọi Claude
  • Không được gọi Llama
  • Không được gọi Titan
  • Không được gọi Mistral

Nhờ vậy, doanh nghiệp có thể kiểm soát chi phí, phân quyền giữa các hệ thống và đảm bảo nguyên tắc Least Privilege.


Kiến trúc đơn giản nhất

Trong hầu hết ứng dụng, luồng hoạt động sẽ như sau:

flowchart LR

    User["User"]

    API["ASP.NET Core API"]

    Role["IAM Role"]

    Bedrock["Amazon Bedrock"]

    Claude["Claude Foundation Model"]

    User --> API
    API --> Role
    Role -->|"InvokeModel()"| Bedrock
    Bedrock --> Claude
    Claude --> Bedrock
    Bedrock --> API
    API --> User

Toàn bộ việc xác thực đều do IAM đảm nhiệm.

Ứng dụng chỉ cần gọi AWS SDK, Bedrock sẽ thay mặt bạn giao tiếp với Foundation Model.


Kết luận

Nếu chỉ nhớ một điều sau bài viết này thì hãy nhớ:

Amazon Bedrock không phải là một AI Model.

Bedrock là dịch vụ của AWS giúp bạn truy cập nhiều Foundation Model thông qua một API thống nhất, đồng thời tận dụng toàn bộ hệ thống bảo mật của AWS như IAM.

Ở bài tiếp theo trong series, chúng ta sẽ tạo IAM Role và viết ứng dụng ASP.NET Core đầu tiên để gọi Claude trên Amazon Bedrock bằng AWS SDK.

Nhận xét

Bài đăng phổ biến từ blog này

[ASP.NET MVC] Authentication và Authorize

Một trong những vấn đề bảo mật cơ bản nhất là đảm bảo những người dùng hợp lệ truy cập vào hệ thống. ASP.NET đưa ra 2 khái niệm: Authentication và Authorize Authentication xác nhận bạn là ai. Ví dụ: Bạn có thể đăng nhập vào hệ thống bằng username và password hoặc bằng ssh. Authorization xác nhận những gì bạn có thể làm. Ví dụ: Bạn được phép truy cập vào website, đăng thông tin lên diễn đàn nhưng bạn không được phép truy cập vào trang mod và admin.

Tổng hợp một số kiến thức lập trình về Amibroker

Giới thiệu về Amibroker Amibroker theo developer Tomasz Janeczko được xây dựng dựa trên ngôn ngữ C. Vì vậy bộ code Amibroker Formula Language sử dụng có syntax khá tương đồng với C, ví dụ như câu lệnh #include để import hay cách gói các object, hàm trong các block {} và kết thúc câu lệnh bằng dấu “;”. AFL trong Amibroker là ngôn ngữ xử lý mảng (an array processing language). Nó hoạt động dựa trên các mảng (các dòng/vector) số liệu, khá giống với cách hoạt động của spreadsheet trên excel.

ASP.NET MVC: Cơ bản về Validation

Validation (chứng thực) là một tính năng quan trọng trong ASP.NET MVC và được phát triển trong một thời gian dài. Validation vắng mặt trong phiên bản đầu tiên của asp.net mvc và thật khó để tích hợp 1 framework validation của một bên thứ 3 vì không có khả năng mở rộng. ASP.NET MVC2 đã hỗ trợ framework validation do Microsoft phát triển, tên là Data Annotations. Và trong phiên bản 3, framework validation đã hỗ trợ tốt hơn việc xác thực phía máy khách, và đây là một xu hướng của việc phát triển ứng dụng web ngày nay.