Chạy Claude Code trên Bedrock hay Vertex AI
Cấu hình Claude Code với Amazon Bedrock hoặc Google Vertex AI: biến môi trường, nguồn credentials, bên chịu phí và các tính năng bạn phải bỏ.
Claude Code chạy trên cloud account của bạn thì có gì thay đổi
Bạn có thể chạy Claude Code trên Amazon Bedrock hoặc Google Vertex AI. Việc chuyển đổi chỉ cần thêm hoặc đổi hai đến ba biến môi trường, cùng với cloud credentials mà team của bạn đã có. Mọi thứ chạy local vẫn giữ nguyên: CLI, subagent, hook, skill, MCP server và các file CLAUDE.md. Chỉ lệnh gọi model được chuyển sang nơi khác. Cùng với nó, 4 yếu tố cũng thay đổi: network mà request đi qua, account thanh toán chi phí, các Claude model bạn được phép gọi và những tính năng phía server thực sự có sẵn.
Câu hỏi hiếm khi là liệu nó có hoạt động hay không. Nó hoạt động. Câu hỏi là trong 4 yếu tố đó, bạn quan tâm nhất đến yếu tố nào.
Ba tuyến định tuyến và chi phí của từng tuyến
Anthropic trực tiếp bằng gói thuê bao. Bạn đăng nhập bằng tài khoản claude.ai thuộc gói Pro, Max, Team hoặc Enterprise. Request được gửi đến API của Anthropic. Bạn trả phí theo seat, còn usage bị giới hạn theo hạn mức của gói thay vì tính theo từng token. Đây là tuyến duy nhất truy cập được các giao diện xây dựng trên tài khoản, chẳng hạn Claude Code trên web, ứng dụng mobile, Desktop và Remote Control. Với team, gói Claude Enterprise bổ sung single sign-on và các thiết lập policy được quản lý.
Anthropic trực tiếp bằng API key. Bạn tạo key trong Anthropic Console và trả phí theo token. Tuyến này dùng cùng hạ tầng và cùng region với gói thuê bao, không tính theo seat, đồng thời usage xuất hiện trong dashboard của Anthropic. Lựa chọn nào rẻ hơn phụ thuộc vào số giờ agent thực sự chạy mỗi ngày. Đây là nội dung chính của so sánh chi phí API với gói thuê bao và chi phí thực tế của Claude Code.
Endpoint bên thứ ba trên Bedrock hoặc Vertex. Tài khoản AWS hoặc Google Cloud của bạn cung cấp model. Anthropic không nằm trên đường đi của request tại thời điểm inference. Các token được tính vào hóa đơn cloud bạn vẫn nhận, theo các policy IAM (identity and access management) và audit log mà bạn đang vận hành. Có thêm hai lựa chọn bên thứ ba là Microsoft Foundry và Claude Platform trên AWS. Chúng có cùng mô hình: một biến môi trường chọn provider, còn tài khoản cloud chịu chi phí.
Lưu ý về tên gọi, tính đến tháng 8 năm 2026: Google đã đổi tên Vertex AI thành Google Cloud's Agent Platform. Tài liệu của Anthropic dùng tên mới, nhưng prompt đăng nhập của Claude Code vẫn ghi Google Vertex AI, còn các biến môi trường vẫn ghi VERTEX.
Lưu trữ dữ liệu theo khu vực mới là lý do thực sự khiến các nhóm chọn cách này
Trên Bedrock, request được gửi đến endpoint Bedrock trong AWS region do bạn chọn, bên trong account của bạn. Dữ liệu lưu trữ được mã hóa bằng AES-256 với key do AWS quản lý. Bạn cũng có thể cung cấp key riêng thông qua AWS KMS (key management service). Trên Vertex, cơ chế tương đương là các key mã hóa do Google quản lý, đồng thời hỗ trợ CMEK (customer-managed encryption keys). Quyền truy cập được kiểm soát bằng các IAM role bạn đang dùng, còn các request xuất hiện trong CloudTrail hoặc Cloud Audit Logs như mọi API call khác. Với một nhóm chịu quy định quản lý, chỉ riêng điều đó đã đủ là lý do, và đây là một lý do xác đáng.
Có 2 chi tiết khiến nhận định này không tuyệt đối như cách marketing mô tả.
Cross-region inference profile không nằm trong một region duy nhất. Trên Bedrock, Claude Code ánh xạ các model mặc định tích hợp sẵn sang ID của cross-region inference profile. Prefix được ưu tiên phụ thuộc vào region mà nó đã xác định: us. trong region us-*, eu. trong region eu-*, apac. trong region ap-* và us-gov. trong GovCloud. Cross-region profile có thể xử lý request từ một region khác trong cùng geography. Vì vậy, điều bạn được đảm bảo là một geography, không phải một thành phố. Nếu yêu cầu của bạn chỉ định một region cụ thể, hãy định tuyến qua application inference profile do bạn quản lý và đặt ANTHROPIC_MODEL thành ARN của profile đó.
Một phần traffic vẫn đến Anthropic, nhưng không phần nào là code của bạn. Telemetry, báo cáo lỗi và command /feedback đều được tắt mặc định trên cả Bedrock và Vertex. /feedback ghi một archive vào ~/.claude/feedback-bundles/ trên chính máy của bạn thay vì upload bất kỳ dữ liệu nào. Có 2 ngoại lệ hoạt động trên mọi provider. Trước khi fetch một URL, tool WebFetch gửi hostname, và chỉ hostname, đến api.anthropic.com để kiểm tra blocklist an toàn. Khảo sát chất lượng session cũng vẫn xuất hiện. Tắt ngoại lệ thứ nhất bằng skipWebFetchPreflight trong file settings. Tắt ngoại lệ thứ hai bằng CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1. Bạn cũng có thể tắt toàn bộ traffic không thiết yếu cùng lúc bằng CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC.
Về việc training: theo điều khoản thương mại, Anthropic không train model bằng code hoặc prompt được gửi qua Claude Code. Việc sử dụng platform bên thứ ba cũng thuộc phạm vi thương mại. Development Partner Program, chương trình opt-in cho phép training, hoàn toàn không được cung cấp cho người dùng Bedrock hoặc Vertex. Zero data retention trên các endpoint này phụ thuộc vào thỏa thuận của bạn với AWS hoặc Google.
Trỏ Claude Code đến Amazon Bedrock
Mỗi AWS account cần thực hiện 2 việc một lần trước khi cấu hình client có hiệu lực. Mở Amazon Bedrock console, chọn một model Anthropic trong model catalog và gửi biểu mẫu use case: quyền truy cập được cấp ngay sau khi gửi. Sau đó gắn IAM policy cho phép các API call mà Claude Code thực hiện.
bedrock:InvokeModelbedrock:InvokeModelWithResponseStreambedrock:ListInferenceProfilesbedrock:GetInferenceProfile
ListInferenceProfiles cho phép Claude Code kiểm tra khi khởi động xem account của bạn thực sự có thể invoke những model nào. GetInferenceProfile cho phép Claude Code ánh xạ ARN của application inference profile về foundation model đứng phía sau, để chọn đúng request shape. Nếu thiếu quyền này, request vẫn thành công vì Claude Code sẽ retry một lần bằng shape còn lại. Dấu hiệu là mỗi model mới phát sinh thêm một round trip, không phải lỗi.
Cách nhanh nhất ở phía client là dùng wizard. Chạy claude, chọn 3rd-party platform, sau đó chọn Amazon Bedrock, hoặc nhập /setup-bedrock trong một session đã đăng nhập. Wizard đọc các profile trong thư mục ~/.aws, xác minh những model bạn có thể invoke và ghi kết quả vào block env của ~/.claude/settings.json, nên không phụ thuộc vào shell profile.
Nếu triển khai bằng script, hãy tự đặt các biến.
export CLAUDE_CODE_USE_BEDROCK=1
export AWS_REGION=us-east-1Credentials lấy từ standard AWS SDK credential chain, nên mọi thứ đang hoạt động với CLI aws đều dùng được ở đây: aws configure, SSO profile, assumed role hoặc Bedrock API key.
aws sso login --profile=your-profile-name
export AWS_PROFILE=your-profile-nameexport AWS_BEARER_TOKEN_BEDROCK=your-bedrock-api-keyBearer token là lựa chọn đơn giản nhất, nhưng cần xử lý cẩn thận vì đây là secret có thời hạn dài nằm trong environment variable. Trên build box dùng chung, nên ưu tiên role có thời hạn. Cách này cũng áp dụng cho mọi credential khác mà agent có thể đọc; nội dung này được trình bày trong giữ secret ngoài tầm với của AI agent.
Bẫy region. Claude Code xác định region theo thứ tự: AWS_REGION, sau đó AWS_DEFAULT_REGION, tiếp theo là region trong AWS profile đang active, rồi đến us-east-1. Bước cuối là giá trị mặc định, không phải lỗi. Vì vậy, nếu team không đặt region ở bất kỳ đâu và nghĩ rằng request sẽ được định tuyến đến châu Âu, request sẽ được gửi đến một region ở Mỹ mà không có cảnh báo nào. Chạy /status trong Claude Code để xem region đã được xác định và nguồn của region đó. Để xác nhận account của bạn có thể gọi những gì trong một region, chạy aws bedrock list-inference-profiles --region your-region.
Chạy Claude Code trên Google Vertex AI
Bật API và lấy thông tin xác thực.
gcloud config set project YOUR-PROJECT-ID
gcloud services enable aiplatform.googleapis.com
gcloud auth application-default loginTrong Model Garden, yêu cầu quyền truy cập vào các model Claude bạn muốn dùng. Quy trình phê duyệt không diễn ra ngay, nên hãy chờ từ 24 đến 48 giờ. Cấp roles/aiplatform.user, trong đó có quyền aiplatform.endpoints.predict dùng cho cả việc gọi model và đếm token.
Sau đó chọn provider.
export CLAUDE_CODE_USE_VERTEX=1
export CLOUD_ML_REGION=global
export ANTHROPIC_VERTEX_PROJECT_ID=YOUR-PROJECT-IDCLOUD_ML_REGION nhận global, một location đa khu vực như eu hoặc us, hoặc một region đơn lẻ. Global endpoint có khả năng sẵn sàng tốt nhất nhưng ít kiểm soát nhất đối với nơi xử lý request. Vì vậy, nếu có yêu cầu về nơi lưu trú dữ liệu, thường cần chỉ định một location thay thế. Phạm vi model khác nhau giữa 3 dạng này. Khi global endpoint thiếu một model cần dùng, chỉ định riêng model đó vào một location bằng biến VERTEX_REGION_CLAUDE_* và để mọi thứ khác dùng global. Hãy kiểm tra trang các location của Vertex AI hiện tại thay vì tin vào danh sách đã lỗi thời.
Bẫy project. ANTHROPIC_VERTEX_PROJECT_ID là nguồn có độ ưu tiên thấp nhất để lấy project ID. GCLOUD_PROJECT, GOOGLE_CLOUD_PROJECT và file credential được chỉ định bởi GOOGLE_APPLICATION_CREDENTIALS đều có độ ưu tiên cao hơn. Trên máy đã export một trong các giá trị đó, chi phí sẽ được tính vào project khác mà không có thông tin nào trong session cho biết điều này.
Xác minh sau mỗi lần thay đổi provider. Chạy /status: dòng API provider hiển thị Google Vertex AI, còn các dòng GCP project, Default region và Model cho biết Claude Code thực sự đã resolve những giá trị nào. Nếu không có dòng provider, các biến chưa được truyền đến process vì chúng được export trong shell khác với shell đã khởi chạy claude. Chuyển chúng vào block env của file settings. Đây cũng là cách giữ một giá trị như AWS_PROFILE không xuất hiện trong mọi process khác mà bạn khởi chạy.
Những model bạn nhận được và thời điểm chúng được cung cấp
Các alias như sonnet và opus không có nghĩa là phiên bản mới nhất. Trên endpoint của bên thứ ba, chúng trỏ đến model mặc định tích hợp sẵn của Claude Code cho provider đó. Model này có thể chậm hơn bản phát hành hiện tại và thậm chí chưa được bật cho account của bạn. Khi model mặc định không khả dụng, Claude Code sẽ fallback sang model cũ hơn hoặc tier thấp hơn trong session đó và in thông báo. Fallback này không được lưu, nên session tiếp theo sẽ thử lại và in thông báo đó lần nữa.
Nếu triển khai cho cả team, hãy pin phiên bản.
# Copy the exact IDs from your provider's own model catalog.
export ANTHROPIC_DEFAULT_OPUS_MODEL='<provider model id>'
export ANTHROPIC_DEFAULT_SONNET_MODEL='<provider model id>'
export ANTHROPIC_DEFAULT_HAIKU_MODEL='<provider model id>'Lấy ID từ tổng quan về các model và catalog của provider, vì format khác nhau tùy provider: Bedrock yêu cầu inference profile ID hoặc ARN, còn Vertex yêu cầu tên model thuần. Không copy ID từ một bài viết, kể cả bài này. Pin model cũng giúp kiểm soát chi phí, vì model primary mặc định thuộc lớp Opus và Opus có chi phí trên mỗi token cao hơn Sonnet. Do đó, deployment không pin model nào sẽ bị tính theo mức cao hơn. Để cố định một model làm session default, hãy đặt ANTHROPIC_MODEL thành full ID của model đó.
Thời điểm model được cung cấp là khác biệt rõ nhất trong so sánh này. Trên API riêng của Anthropic, model hoạt động ngay trong ngày phát hành. Trên Bedrock và Vertex, model chỉ hoạt động sau khi cloud provider đã bật model đó trong region của bạn và account của bạn được cấp quyền truy cập. Thời gian này ít nhất cũng chậm hơn vài ngày, và đôi khi lâu hơn nhiều. Nếu có workload phải chạy trên model mới nhất, hãy giữ lại một routing có thể truy cập model đó. Đây là trường hợp thực tế để định tuyến các model khác nhau cho từng công việc.
Những gì bạn phải từ bỏ khi dùng Bedrock và Vertex
Mọi tính năng chạy cục bộ đều hoạt động trên mọi provider: subagent, hook, slash command, skill, plugin, checkpoint, sandbox, managed settings file và metrics OpenTelemetry. Các điểm thiếu đều nằm ở phía server.
Không khả dụng trên cả hai endpoint: fast mode, Advisor, Channels, nhắn tin giữa các session, analytics dashboard và server-managed settings. Ngoài ra, mọi tính năng cần tài khoản claude.ai cũng không khả dụng. Các tính năng này gồm Claude Code trên web, ứng dụng mobile, Desktop, Remote Control, routine và artifact.
Chỉ không có trên Bedrock: tool WebSearch không tồn tại ở đó, nên Claude không thể chạy tìm kiếm từ session được định tuyến đến Bedrock. Claude vẫn có thể đọc một trang bằng WebFetch nếu bạn cung cấp URL. Trên Vertex, web search hoạt động với các model thuộc thế hệ Claude 4 và mới hơn.
Chỉ hoạt động một phần trên cả hai: auto mode chỉ chạy trên một tập hợp giới hạn các model mới hơn, còn /loop cần một interval cụ thể vì nó không thể tự chọn interval. Hãy kiểm tra trang tính khả dụng của tính năng của Anthropic trước khi cam kết cung cấp một tính năng cho team, vì danh sách này thường thay đổi.
Chi phí này tính vào hóa đơn của ai
Subscription và endpoint bên thứ ba là hai khoản mua riêng. Khoản này không thay thế cho khoản kia.
Cần nói rõ điều này vì lỗi có thể xảy ra mà không có dấu hiệu rõ ràng. Nếu đặt CLAUDE_CODE_USE_BEDROCK=1 trên máy mà bạn cũng đang đăng nhập bằng một Max seat, AWS sẽ tính phí từng token theo bảng giá của Bedrock. Seat vẫn tiếp tục bị tính phí hằng tháng nhưng không chi trả cho lưu lượng đó. Cũng không có chế độ xem tổng hợp: chi phí sẽ hiển thị trong AWS Cost Explorer hoặc Google Cloud Billing, còn Anthropic analytics dashboard không khả dụng trên cả hai provider. Lệnh /logout cũng biến mất vì không có Anthropic session nào để kết thúc. Credential là cloud credential.
Bảng giá nằm trên trang riêng của provider và có thể thay đổi. Hãy xem bảng giá Amazon Bedrock hoặc bảng giá Vertex AI, thay vì dựa vào bất kỳ con số nào trong bài viết. Có một điểm về cấu trúc không thay đổi: trên các endpoint này, bạn mua năng lực inference tính theo token. Vì vậy, agent chạy cả ngày sẽ tốn phí tương ứng, không có giới hạn của plan để tự dừng nó.
Giới hạn tốc độ và quota hoạt động khác nhau trên từng routing
Trong subscription, các giới hạn thuộc về account, được reset theo lịch, và khi chạm giới hạn thì bạn phải chờ. Hành vi này được mô tả trong cách hoạt động của các giới hạn sử dụng.
Trên Anthropic API key, các giới hạn thuộc về organization, được tính bằng số request và token mỗi phút, và tăng theo usage tier của bạn.
Trên Bedrock và Vertex, các giới hạn là quota của cloud, áp dụng theo account hoặc project, theo model và region, không liên quan đến bất kỳ plan Anthropic nào. Lỗi 429 có nghĩa là account đó đã chạm quota cho model tại region đó. Vì vậy, cách xử lý nằm trong console của provider: request tăng quota hoặc chuyển sang location còn headroom. Bedrock tính quota theo quy tắc token burndown thay vì số request cố định, còn reserved capacity được mua dưới dạng provisioned throughput. Trên Vertex, lỗi 429 thường có nghĩa là endpoint ở một region duy nhất không phục vụ được cả model chính và model nhỏ, nhanh. Vì vậy, CLOUD_ML_REGION=global là điểm bắt đầu được tài liệu khuyến nghị. Trang quota của Google hướng dẫn cách request tăng quota.
Các lỗi thường gặp và chuỗi lỗi bạn sẽ thấy
Could not load the default credentials, trên Vertex. Application Default Credentials bị thiếu hoặc đã hết hạn. Chạy gcloud auth application-default login hoặc trỏ GOOGLE_APPLICATION_CREDENTIALS đến file khóa của service account.
Lỗi 404 có tên model, trên Vertex. Model chưa được bật trong Model Garden cho project đó, hoặc không được cung cấp tại location bạn đã đặt. Một số model chỉ được phục vụ trên global endpoint hoặc tại location multi-region như eu, không bao giờ được phục vụ tại một region cụ thể.
on-demand throughput isn't supported, trên Bedrock. Bạn đã truyền một foundation model ID đơn thuần cho model chỉ được phục vụ thông qua inference profile. Hãy dùng inference profile ID thay thế.
AWS default-chain credential resolve timed out. Một bước trong chuỗi thông tin xác thực AWS bị treo, thường nhất là helper credential_process đang chờ input nhưng không thể nhận được. Mỗi lần resolve chuỗi sẽ timeout sau 60 giây. Nếu chuỗi của bạn thực sự cần lâu hơn, chẳng hạn browser SSO flow có MFA (xác thực đa yếu tố) chạy phía sau một wrapper, hãy tăng giới hạn theo đơn vị milliseconds bằng CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS.
Lỗi khi khởi động Bedrock streaming response has content-type. Một thành phần giữa Claude Code và Bedrock đang rewrite stream. Bedrock stream theo định dạng binary event-stream với content type application/vnd.amazon.eventstream, nên gateway re-emit stream này dưới dạng server-sent events sẽ trả về body mà Claude Code không thể decode. Hãy sửa gateway để giữ nguyên response body và header Content-Type khi chuyển tiếp.
Các tab trình duyệt mở lặp vô hạn trong khi AWS SSO. Corporate VPN hoặc proxy kiểm tra TLS làm gián đoạn quá trình đăng nhập. Claude Code đọc kết nối bị hỏng là lỗi xác thực, chạy lại command awsAuthRefresh rồi lặp vô hạn. Xóa awsAuthRefresh khỏi file settings và chạy aws sso login thủ công trước khi khởi động Claude Code.
Chọn tuyến kết nối
Chọn Anthropic direct nếu bạn muốn dùng model mới ngay ngày phát hành và có đầy đủ tính năng. Chọn API key nếu bạn muốn tính phí theo token mà không phải mua seat. Chọn Bedrock hoặc Vertex nếu yêu cầu là inference phải chạy bên trong cloud account do bạn quản lý, và bạn chấp nhận pipeline model chậm hơn cùng danh sách tính năng ngắn hơn để đổi lấy điều đó. Các trang hướng dẫn nên lưu lại là tài liệu chính thức của Anthropic cho Amazon Bedrock và Google Vertex AI, cùng danh sách model theo region của AWS.
Không lựa chọn nào trong ba lựa chọn này thay đổi nơi agent thực thi. Claude Code là một tiến trình local đọc các file của bạn và chạy các command của bạn, bất kể endpoint nào phản hồi nó. Vì vậy, các team muốn chạy nó ở nơi khác ngoài laptop đưa coding agent lên VPS rồi export các biến tương tự tại đó.
FAQ
Gói thuê bao Claude có trả phí cho Claude Code trên Bedrock hoặc Vertex không?
Không. Gói Pro, Max, Team hoặc Enterprise và endpoint bên thứ ba là 2 khoản mua riêng; khoản này không bao gồm khoản kia. Khi đặt CLAUDE_CODE_USE_BEDROCK=1 hoặc CLAUDE_CODE_USE_VERTEX=1, AWS hoặc Google Cloud tính phí theo từng token với mức giá của họ và ghi vào hóa đơn cloud tương ứng, còn gói thuê bao vẫn được tính phí hàng tháng cho các bề mặt mà gói đó áp dụng. Việc theo dõi chi phí cũng chuyển sang AWS Cost Explorer hoặc Google Cloud Billing vì dashboard analytics của Anthropic không có trên 2 nhà cung cấp này.
Claude Code gửi request đến region nào trên Amazon Bedrock?
Đó là region mà Claude Code đã xác định; /status sẽ hiển thị region này. Claude Code kiểm tra AWS_REGION, sau đó AWS_DEFAULT_REGION, rồi region trong AWS profile đang active, và dùng us-east-1 nếu không biến nào trong số đó được đặt. Các model mặc định tích hợp sẵn sau đó được ánh xạ đến cross-region inference profile có prefix theo region đó, chẳng hạn us. hoặc eu.; cross-region profile có thể xử lý request từ một region khác trong cùng geography. Khi bắt buộc phải dùng một region cụ thể, hãy dùng application inference profile do bạn quản lý và đặt ANTHROPIC_MODEL thành ARN của profile đó.
Vì sao model Claude mới nhất không xuất hiện trong tài khoản Bedrock hoặc Vertex của tôi?
Vì mỗi cloud provider bật model theo lịch riêng, đồng thời tài khoản của bạn cũng phải được cấp quyền truy cập. Trên Vertex, bạn yêu cầu quyền truy cập trong Model Garden; quá trình phê duyệt có thể mất 24 đến 48 giờ. Trong thời gian đó, các alias như sonnet và opus sẽ trỏ đến model mặc định tích hợp sẵn của Claude Code cho provider đó. Nếu model mặc định chưa được bật trong tài khoản, Claude Code sẽ chuyển sang model cũ hơn hoặc tier thấp hơn cho session và hiển thị thông báo. Hãy pin ANTHROPIC_DEFAULT_SONNET_MODEL và các biến liên quan vào những ID mà bạn đã xác nhận là được bật.
Claude Code trên Amazon Bedrock có hỗ trợ tìm kiếm web không?
Không. Tool WebSearch không có trên Bedrock, nên Claude không thể chạy tìm kiếm từ session được định tuyến đến đó. Claude vẫn có thể đọc một trang cụ thể bằng WebFetch khi bạn cung cấp URL. Trên Google Vertex AI, tìm kiếm web có hoạt động đối với các model thuộc thế hệ Claude 4 trở lên. Đây là một trong số ít khác biệt về capability có lợi cho Vertex.
Tôi có cần tài khoản Anthropic để chạy Claude Code trên Bedrock hoặc Vertex không?
Không. Thông tin xác thực là credential AWS hoặc Google Cloud của bạn; vì vậy /logout không khả dụng trên cả 2 provider. Dù dùng provider nào, vẫn có một kết nối đến Anthropic: trước khi fetch một URL, tool WebFetch gửi hostname, và chỉ hostname, đến api.anthropic.com để kiểm tra với safety blocklist. Đặt skipWebFetchPreflight trong file settings để tắt việc này, và kết hợp với các rule cấp quyền của WebFetch nếu bạn vẫn muốn giới hạn những domain mà Claude có thể truy cập.