Amazon Bedrock
OpenClaw có thể dùng model Amazon Bedrock thông qua Bedrock Converse streaming provider của pi‑ai. Bedrock auth sử dụng AWS SDK default credential chain, không phải API key.
pi‑ai hỗ trợ gì
- Provider:
amazon-bedrock - API:
bedrock-converse-stream - Auth: AWS credentials (env vars, shared config, hoặc instance role)
- Region:
AWS_REGIONhoặcAWS_DEFAULT_REGION(mặc định:us-east-1)
Tự động phát hiện model
Nếu phát hiện có AWS credentials, OpenClaw có thể tự động phát hiện các model Bedrock hỗ trợ streaming và text output. Quá trình phát hiện dùng bedrock:ListFoundationModels và được cache (mặc định: 1 giờ).
Các tùy chọn config nằm trong models.bedrockDiscovery:
{
models: {
bedrockDiscovery: {
enabled: true,
region: "us-east-1",
providerFilter: ["anthropic", "amazon"],
refreshInterval: 3600,
defaultContextWindow: 32000,
defaultMaxTokens: 4096,
},
},
}
Lưu ý:
enabledmặc định làtruekhi có AWS credentials.regionmặc định lấy từAWS_REGIONhoặcAWS_DEFAULT_REGION, sau đó làus-east-1.providerFilterkhớp với tên provider Bedrock (ví dụanthropic).refreshIntervaltính bằng giây; đặt thành0để tắt caching.defaultContextWindow(mặc định:32000) vàdefaultMaxTokens(mặc định:4096) được dùng cho các model được phát hiện (ghi đè nếu bạn biết giới hạn của model).
Setup (thủ công)
- Đảm bảo AWS credentials có sẵn trên gateway host:
export AWS_ACCESS_KEY_ID="AKIA..."
export AWS_SECRET_ACCESS_KEY="..."
export AWS_REGION="us-east-1"
# Tùy chọn:
export AWS_SESSION_TOKEN="..."
export AWS_PROFILE="your-profile"
# Tùy chọn (Bedrock API key/bearer token):
export AWS_BEARER_TOKEN_BEDROCK="..."
- Thêm Bedrock provider và model vào config của bạn (không cần
apiKey):
{
models: {
providers: {
"amazon-bedrock": {
baseUrl: "https://bedrock-runtime.us-east-1.amazonaws.com",
api: "bedrock-converse-stream",
auth: "aws-sdk",
models: [
{
id: "anthropic.claude-opus-4-5-20251101-v1:0",
name: "Claude Opus 4.5 (Bedrock)",
reasoning: true,
input: ["text", "image"],
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
contextWindow: 200000,
maxTokens: 8192,
},
],
},
},
},
agents: {
defaults: {
model: { primary: "amazon-bedrock/anthropic.claude-opus-4-5-20251101-v1:0" },
},
},
}
EC2 Instance Roles
Khi chạy OpenClaw trên EC2 instance có gắn IAM role, AWS SDK sẽ tự động dùng instance metadata service (IMDS) để xác thực. Tuy nhiên, hiện tại OpenClaw chỉ kiểm tra credential detection qua biến môi trường, không qua IMDS credentials.
Cách giải quyết: Đặt AWS_PROFILE=default để báo hiệu rằng AWS credentials đã có sẵn. Xác thực thực tế vẫn dùng instance role qua IMDS.
# Thêm vào ~/.bashrc hoặc shell profile của bạn
export AWS_PROFILE=default
export AWS_REGION=us-east-1
Quyền IAM cần thiết cho EC2 instance role:
bedrock:InvokeModelbedrock:InvokeModelWithResponseStreambedrock:ListFoundationModels(cho tự động phát hiện)
Hoặc gắn managed policy AmazonBedrockFullAccess.
Setup nhanh:
# 1. Tạo IAM role và instance profile
aws iam create-role --role-name EC2-Bedrock-Access \
--assume-role-policy-document '{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": {"Service": "ec2.amazonaws.com"},
"Action": "sts:AssumeRole"
}]
}'
aws iam attach-role-policy --role-name EC2-Bedrock-Access \
--policy-arn arn:aws:iam::aws:policy/AmazonBedrockFullAccess
aws iam create-instance-profile --instance-profile-name EC2-Bedrock-Access
aws iam add-role-to-instance-profile \
--instance-profile-name EC2-Bedrock-Access \
--role-name EC2-Bedrock-Access
# 2. Gắn vào EC2 instance của bạn
aws ec2 associate-iam-instance-profile \
--instance-id i-xxxxx \
--iam-instance-profile Name=EC2-Bedrock-Access
# 3. Trên EC2 instance, bật discovery
openclaw config set models.bedrockDiscovery.enabled true
openclaw config set models.bedrockDiscovery.region us-east-1
# 4. Đặt các biến môi trường workaround
echo 'export AWS_PROFILE=default' >> ~/.bashrc
echo 'export AWS_REGION=us-east-1' >> ~/.bashrc
source ~/.bashrc
# 5. Kiểm tra xem model đã được phát hiện chưa
openclaw models list
Lưu ý
- Bedrock yêu cầu model access được bật trong AWS account/region của bạn.
- Tự động phát hiện cần quyền
bedrock:ListFoundationModels. - Nếu bạn dùng profiles, hãy đặt
AWS_PROFILEtrên gateway host. - OpenClaw ưu tiên nguồn credential theo thứ tự:
AWS_BEARER_TOKEN_BEDROCK, sau đóAWS_ACCESS_KEY_ID+AWS_SECRET_ACCESS_KEY, sau đóAWS_PROFILE, rồi mới đến default AWS SDK chain. - Hỗ trợ reasoning phụ thuộc vào model; kiểm tra Bedrock model card để biết khả năng hiện tại.
- Nếu bạn thích dùng managed key flow, bạn cũng có thể đặt một OpenAI‑compatible proxy trước Bedrock và config nó như một OpenAI provider.