Appearance
OpenClaw AWS 部署实战手册:EC2 + S3 三分钟极速上线
AWS 是全球最大的云服务商,提供弹性扩展、全球加速和成本优化。本文详解 OpenClaw 在 AWS 的完整部署流程,从 EC2 选型到 S3 存储,一站式解决海外用户部署需求。
AWS 部署优势
| 优势 | 说明 |
|---|---|
| 弹性扩展 | 自动扩缩容,应对流量高峰 |
| 全球加速 | 30+ 区域,就近访问 |
| 成本优化 | Spot 实例节省 90% |
| 安全合规 | SOC/ISO 认证 |
EC2 实例选型
实例类型推荐
| 类型 | 实例规格 | vCPU | 内存 | 适用场景 | 月费用 |
|---|---|---|---|---|---|
| t3.medium | 通用型 | 2 | 4GB | 个人使用 | $30 |
| t3.large | 通用型 | 2 | 8GB | 小团队 | $60 |
| c5.xlarge | 计算优化 | 4 | 8GB | 高并发 | $120 |
| r5.large | 内存优化 | 2 | 16GB | 大数据处理 | $100 |
Spot 实例省钱
Spot 实例特点:
- 价格比按需实例低 60-90%
- 可能被回收(提前 2 分钟通知)
- 适合无状态、可中断的任务
推荐配置:
- 主服务:按需实例(稳定)
- 工作节点:Spot 实例(省钱)快速部署流程
步骤 1:创建 EC2 实例
1. 登录 AWS 控制台:https://console.aws.amazon.com
2. 进入 EC2 控制台
3. 点击「Launch Instance」
4. 配置:
- Name: openclaw-server
- AMI: Ubuntu 22.04 LTS
- Instance Type: t3.medium
- Key Pair: 创建或选择现有密钥
- Network Settings:
* VPC: default
* Subnet: public subnet
* Auto-assign public IP: Enable
* Security Group: 创建新组,开放端口:
- SSH (22) - 来源:你的IP
- HTTP (80) - 来源:0.0.0.0/0
- HTTPS (443) - 来源:0.0.0.0/0
- Custom (3000) - 来源:0.0.0.0/0
- Storage: 30GB gp3
5. Launch Instance步骤 2:一键部署
bash
# SSH 连接实例
ssh -i your-key.pem ubuntu@your-ec2-public-ip
# 一键部署脚本
curl -fsSL https://install.openclaw.ai/aws.sh | bash
# 部署过程
[2026-04-08 19:30:00] 开始安装 OpenClaw...
[2026-04-08 19:30:05] ✅ 系统环境检查
[2026-04-08 19:30:10] ✅ 禁用 SELinux
[2026-04-08 19:30:15] ✅ 安装 Node.js 20.x
[2026-04-08 19:30:30] ✅ 安装 PM2
[2026-04-08 19:30:40] ✅ 下载 OpenClaw
[2026-04-08 19:30:55] ✅ 配置监听 0.0.0.0
[2026-04-08 19:31:00] ✅ 启动服务
=====================================
OpenClaw 部署成功!
=====================================
访问地址:http://your-ec2-public-ip:3000
管理员账号:admin
初始密码:xxxx1234
=====================================步骤 3:验证访问
bash
# 健康检查
curl http://localhost:3000/health
# 输出
{"status":"healthy","version":"2026.4.0"}安全组配置详解
推荐安全组规则
入站规则 (Inbound Rules):
┌──────────┬────────────────┬──────────┬─────────────────┐
│ 类型 │ 来源 │ 端口 │ 说明 │
├──────────┼────────────────┼──────────┼─────────────────┤
│ SSH │ 你的IP/32 │ 22 │ 仅允许你的IP │
│ HTTP │ 0.0.0.0/0 │ 80 │ HTTP访问 │
│ HTTPS │ 0.0.0.0/0 │ 443 │ HTTPS访问 │
│ Custom │ 0.0.0.0/0 │ 3000 │ OpenClaw端口 │
└──────────┴────────────────┴──────────┴─────────────────┘
⚠️ 安全建议:
- SSH 端口限制为你的IP,禁止公网访问
- 生产环境关闭 3000 端口,使用 Nginx 反代AWS CLI 配置安全组
bash
# 获取安全组ID
SG_ID=$(aws ec2 describe-instances \
--filters "Name=tag:Name,Values=openclaw-server" \
--query "Reservations[0].Instances[0].SecurityGroups[0].GroupId" \
--output text)
# 添加规则
aws ec2 authorize-security-group-ingress \
--group-id $SG_ID \
--protocol tcp \
--port 3000 \
--cidr 0.0.0.0/0S3 对象存储配置
创建 S3 存储桶
1. 进入 S3 控制台
2. 点击「Create bucket」
3. 配置:
- Bucket name: openclaw-storage-your-name
- Region: 与 EC2 同区域
- Block Public Access: 启用(私有访问)
- Versioning: 禁用
- Default encryption: SSE-S3
4. Create bucket配置 IAM 权限
json
// 创建 IAM 角色,附加以下策略
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::openclaw-storage-your-name",
"arn:aws:s3:::openclaw-storage-your-name/*"
]
}
]
}OpenClaw 配置 S3
json
// config.json
{
"storage": {
"type": "s3",
"config": {
"bucket": "openclaw-storage-your-name",
"region": "us-east-1",
"accessKeyId": "${AWS_ACCESS_KEY_ID}",
"secretAccessKey": "${AWS_SECRET_ACCESS_KEY}"
}
}
}VPC 网络配置
网络架构
┌─────────────────────────────────────────────────────────────┐
│ VPC (10.0.0.0/16) │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────┐ ┌─────────────────────┐ │
│ │ Public Subnet │ │ Private Subnet │ │
│ │ 10.0.1.0/24 │ │ 10.0.2.0/24 │ │
│ ├─────────────────────┤ ├─────────────────────┤ │
│ │ • NAT Gateway │ │ • OpenClaw Server │ │
│ │ • Load Balancer │ │ • Database │ │
│ │ • Bastion Host │ │ • Redis │ │
│ └─────────────────────┘ └─────────────────────┘ │
│ │
│ Internet Gateway ←─────→ NAT Gateway │
└─────────────────────────────────────────────────────────────┘创建 VPC
bash
# 使用 AWS CLI 创建 VPC
# 1. 创建 VPC
VPC_ID=$(aws ec2 create-vpc \
--cidr-block 10.0.0.0/16 \
--query 'Vpc.VpcId' \
--output text)
# 2. 创建子网
PUBLIC_SUBNET=$(aws ec2 create-subnet \
--vpc-id $VPC_ID \
--cidr-block 10.0.1.0/24 \
--query 'Subnet.SubnetId' \
--output text)
PRIVATE_SUBNET=$(aws ec2 create-subnet \
--vpc-id $VPC_ID \
--cidr-block 10.0.2.0/24 \
--query 'Subnet.SubnetId' \
--output text)
# 3. 创建 Internet Gateway
IGW_ID=$(aws ec2 create-internet-gateway \
--query 'InternetGateway.InternetGatewayId' \
--output text)
aws ec2 attach-internet-gateway \
--vpc-id $VPC_ID \
--internet-gateway-id $IGW_IDCloudFront CDN 加速
配置 CloudFront
1. 进入 CloudFront 控制台
2. 点击「Create distribution」
3. Origin Settings:
- Origin Domain Name: your-ec2-public-ip
- Origin Protocol Policy: HTTP Only
- HTTP Port: 3000
4. Default Cache Behavior:
- Viewer Protocol Policy: Redirect HTTP to HTTPS
- Allowed HTTP Methods: GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
- Cache Policy: CachingDisabled(动态内容)
5. Settings:
- Price Class: Use All Edge Locations
- Alternate Domain Names: your-domain.com
- Custom SSL Certificate: 选择证书
6. Create Distribution自动扩缩容
Auto Scaling 配置
bash
# 1. 创建启动模板
aws ec2 create-launch-template \
--launch-template-name openclaw-template \
--launch-template-data '{
"ImageId": "ami-xxxx",
"InstanceType": "t3.medium",
"KeyName": "your-key",
"SecurityGroupIds": ["sg-xxxx"],
"UserData": "'$(base64 -w0 <<'EOF'
#!/bin/bash
curl -fsSL https://install.openclaw.ai/aws.sh | bash
EOF
)'"
}'
# 2. 创建 Auto Scaling Group
aws autoscaling create-auto-scaling-group \
--auto-scaling-group-name openclaw-asg \
--launch-template "LaunchTemplateId=lt-xxxx" \
--min-size 1 \
--max-size 5 \
--desired-capacity 2 \
--vpc-zone-identifier "subnet-xxxx"监控与日志
CloudWatch 配置
1. 进入 CloudWatch 控制台
2. 创建告警:
- CPU 使用率 > 80% 持续 5 分钟
- 内存使用率 > 80%(需安装 CloudWatch Agent)
- 磁盘使用率 > 80%
3. 配置通知:
- 创建 SNS Topic
- 订阅邮箱安装 CloudWatch Agent
bash
# 安装
wget https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb
sudo dpkg -i amazon-cloudwatch-agent.deb
# 配置
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
# 启动
sudo systemctl start amazon-cloudwatch-agent
sudo systemctl enable amazon-cloudwatch-agent成本优化
月度费用估算
| 服务 | 配置 | 月费用 |
|---|---|---|
| EC2 (t3.medium) | 按需 | $30 |
| EBS (30GB gp3) | SSD | $3 |
| 数据传输 | 100GB | $9 |
| S3 存储 | 50GB | $1 |
| CloudFront | 100GB | $9 |
| 总计 | - | $52/月 |
省钱技巧
| 方法 | 节省比例 | 说明 |
|---|---|---|
| Reserved Instance | 30-60% | 预留实例 |
| Spot Instance | 60-90% | 竞价实例 |
| Savings Plans | 20-40% | 承诺使用量 |
| S3 Intelligent Tiering | 40% | 自动分层存储 |
故障排查
常见问题
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 连接超时 | 安全组未开放 | 检查 Security Group |
| 服务启动失败 | 监听 127.0.0.1 | 改为 0.0.0.0 |
| 权限错误 | IAM 权限不足 | 检查 IAM 策略 |
| 存储空间满 | 日志/数据过大 | 扩容 EBS |
排查命令
bash
# 查看实例状态
aws ec2 describe-instance-status --instance-ids i-xxxx
# 查看安全组规则
aws ec2 describe-security-groups --group-ids sg-xxxx
# 查看 CloudWatch 指标
aws cloudwatch get-metric-statistics \
--namespace AWS/EC2 \
--metric-name CPUUtilization \
--dimensions Name=InstanceId,Value=i-xxxx \
--start-time $(date -u -d '1 hour ago' +%Y-%m-%dT%H:%M:%SZ) \
--end-time $(date -u +%Y-%m-%dT%H:%M:%SZ) \
--period 300 \
--statistics Average总结
| 步骤 | 操作 | 时间 |
|---|---|---|
| 创建 EC2 | 选择配置 | 2 分钟 |
| 一键部署 | 执行脚本 | 1 分钟 |
| 验证访问 | 健康检查 | 30 秒 |
| 总计 | - | 3 分钟 |
AWS 部署要点:
- 实例类型:t3.medium 起,按需扩展
- 安全组:限制 SSH,开放 HTTP/HTTPS
- 存储方案:S3 对象存储 + EBS 块存储
- 成本优化:Spot 实例节省 60-90%
AWS 提供全球基础设施和完善的服务生态,适合需要海外部署的企业用户。弹性扩展和按需付费让成本可控,CloudWatch 监控保障服务稳定。
