AWS操作AI代理

Zarathustra AWS Ops是一个基于AI的AWS操作代理,通过MCP工具集成实现Secrets Manager、Route53、S3等AWS服务的自动化管理。

  • by DepStacks
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 DepStacks/zarathustra-aws-ops

使用说明

查拉图斯特拉AWS运营

用于AWS操作的AI代理-使用MCP(模型上下文协议)工具用于Secrets Manager、Route53、S3等。

建筑

┌─────────────────────────────────────────────────────────────────┐
│                     Zarathustra AWS Ops                         │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌─────────────┐    ┌──────────────┐    ┌─────────────────┐    │
│  │ SQS Queue   │───▶│  SQS         │───▶│ Workflow        │    │
│  │ (Requests)  │    │  Listener    │    │ Manager         │    │
│  └─────────────┘    └──────────────┘    └────────┬────────┘    │
│                                                   │             │
│                                         ┌─────────▼─────────┐   │
│                                         │   LangChain       │   │
│                                         │   AWS Ops Agent   │   │
│                                         └─────────┬─────────┘   │
│                                                   │             │
│                                         ┌─────────▼─────────┐   │
│                                         │   MCP Client      │   │
│                                         └─────────┬─────────┘   │
│                                                   │             │
└───────────────────────────────────────────────────┼─────────────┘
                                                    │
                    ┌───────────────────────────────┼───────────────────────────────┐
                    │                               │                               │
           ┌────────▼────────┐            ┌────────▼────────┐            ┌────────▼────────┐
           │  AWS Ops MCP    │            │  Route53 MCP    │            │  S3 MCP         │
           │  (Secrets Mgr)  │            │  (Coming Soon)  │            │  (Coming Soon)  │
           └────────┬────────┘            └────────┬────────┘            └────────┬────────┘
                    │                               │                               │
           ┌────────▼────────┐            ┌────────▼────────┐            ┌────────▼────────┐
           │ AWS Secrets     │            │ AWS Route53     │            │ AWS S3          │
           │ Manager         │            │                 │            │                 │
           └─────────────────┘            └─────────────────┘            └─────────────────┘

特性

  • 人工智能驱动的操作:LangChain代理理解自然语言请求
  • MCP集成:连接到MCP服务器以进行AWS操作
  • 多账户支持:配置文件和假设角色身份验证
  • 基于SQS:通过SQS队列异步处理请求
  • 回拨支持:将结果发送回调用应用程序
  • Docker就绪:生产就绪的集装箱化

项目结构

zarathustra-aws-ops/
├── main.py                    # Entry point
├── src/
│   ├── core/
│   │   ├── agent.py           # LangChain agent with MCP tools
│   │   └── workflow_manager.py
│   ├── integrations/
│   │   └── mcp_client.py      # MCP client for tool execution
│   ├── listeners/
│   │   └── sqs_listener.py    # SQS message processor
│   └── resources/
│       └── prompt.md          # Agent system prompt
├── config/
│   └── mcp_servers.yaml       # MCP server configuration
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
└── README.md

快速开始

先决条件

  • Python 3.12+
  • 已配置AWS凭据
  • OpenAI API密钥
  • MCP服务器正在运行(例如tool.aws操作系统)

地方发展

  1. 克隆和设置:
git clone https://github.com/DepStacks/zarathustra-aws-ops.git
cd zarathustra-aws-ops
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
  1. 配置环境:
cp .env.example .env
# Edit .env with your settings
  1. 运行代理:
python main.py

Docker部署

# With MCP server
docker-compose up -d

# Agent only (external MCP server)
docker build -t zarathustra-aws-ops .
docker run -d --env-file .env zarathustra-aws-ops

配置

环境变量

变量 描述 默认值
OPENAI_API_KEY OpenAI API密钥(必需) -
OPENAI_MODEL 要使用的OpenAI模型 gpt-4-turbo-preview
SQS_QUEUE_URL SQS队列URL(必需) -
AWS_REGION AWS区域 us-east-1
MCP_AWS_OPS_URL AWS运维MCP服务器URL http://localhost:8100
MCP_AWS_OPS_TOKEN MCP身份验证令牌 -
MAX_WORKERS 并行消息处理器 5

SQS消息格式

以以下格式向SQS队列发送消息:

{
  "prompt": "Create a secret called prod/myapp/database with value {\"host\": \"db.example.com\"}",
  "profile": "production",
  "region": "us-east-1",
  "callback_url": "https://your-app.com/webhook/response",
  "metadata": {
    "request_id": "abc123",
    "user": "john@example.com"
  }
}

领域

字段 必填 描述
prompt 或 request 是 自然语言AWS操作请求
profile 否 AWS凭据配置文件
role_arn 无 跨账户的IAM角色ARN
region 否 AWS区域覆盖
callback_url 无 发送结果的URL
metadata 否 其他上下文

支持的操作

秘密经理

  • ✅ 创建秘密
  • ✅ 获取机密值
  • ✅ 更新机密
  • ✅ 删除机密
  • ✅ 列出秘密

Route53(即将推出)

  • 🔜 创建/更新DNS记录
  • 🔜 删除DNS记录
  • 🔜 列出托管区域

S3(即将推出)

  • 🔜 创建bucket
  • 🔜 列出桶
  • 🔜 管理存储桶策略

EC2(即将推出)

  • 🔜 实例管理
  • 🔜 安全组

请求示例

创建一个秘密

{
  "prompt": "Create a secret called prod/api/keys with value {\"stripe_key\": \"sk_live_xxx\", \"sendgrid_key\": \"SG.xxx\"}",
  "profile": "production"
}

列出秘密

{
  "prompt": "List all secrets starting with 'prod/' in the staging account",
  "profile": "staging"
}

删除机密

{
  "prompt": "Delete the secret staging/old-app/config with 7 day recovery window",
  "profile": "staging"
}

与zarathustra api集成

此代理旨在与 扎拉图斯特拉api,它提供了一个API网关,用于向SQS队列发布请求。

Slack/Telegram/Jira → zarathustra-api → SQS → zarathustra-aws-ops → MCP → AWS

发展

添加新的MCP工具

  1. 在中添加工具定义 src/core/agent.py:
def _create_new_service_tools(self) -> List[BaseTool]:
    class NewToolArgs(BaseModel):
        param: str = Field(description="Parameter description")
    
    return [self._create_mcp_tool(
        "aws-ops", "new_tool",
        "Tool description",
        NewToolArgs
    )]
  1. 在中注册工具 _build_tools():
tools.extend(self._create_new_service_tools())

运行测试

pytest tests/

安全

  • 从不硬编码AWS凭据
  • 在生产中使用IAM角色(IRSA)
  • MCP令牌应安全存储
  • 启用CloudTrail进行审核日志记录

许可证

麻省理工学院

相关项目