以下示例演示了如何使用 AWS Fargate 部署 Amazon ECS 的代理 AI 架构。它使用 AWS CDK 来部署架构组件。

该架构由以下组件组成:
AWS Fargate 服务之间的服务到服务通信使用 Service Connect。AI 服务利用自定义的 DNS 名称来连接此示例中可用的 MCP 服务器。
该示例还会生成一个 AWS 密钥,用于在调用应用负载均衡器 URL 时作为 x-api-key 头。
要将此示例部署到您的账户,请按照以下说明操作:
# 安装依赖项
$ npm install
# 登录公共 ECR 注册表以允许下载基础镜像
$ aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
# 初始化您的 AWS 环境(如果您尚未这样做)
$ npm run cdk bootstrap
# 将 CDK 堆栈部署到您的账户
$ npm run cdk deploy
一旦部署完成,您将从 AWS CDK 获得以下输出:
✅ EcsMcpServerSampleStack
✨ 部署时间: 362.32秒
输出:
EcsMcpServerSampleStack.ALBLoadBalancerDNS6ED38D87 = [应用负载均衡器 URL]
EcsMcpServerSampleStack.AiServiceSecretARN2FB050DB = [密钥 ARN]
在调用应用负载均衡器 URL 之前,您需要通过以下命令检索密钥值:
$ aws secretsmanager get-secret-value --secret-id [密钥 ARN]
# 或使用以下命令直接获取值
$ aws secretsmanager get-secret-value --secret-id [密钥 ARN] --output json | jq -r '.SecretString'
现在您有了所有信息,可以调用应用负载均衡器 URL 来测试代理:
curl --location 'http://[ALB-URL]/chat' \
--header 'x-api-key: [密钥值]' \
--header 'Content-Type: application/json' \
--data '{
"prompt": "什么命令可以列出 AWS 存储桶"
}'
{
"answer": "列出 AWS S3 存储桶的命令是:\n\n```bash\naws s3 ls\n```\n\n此命令将显示您 AWS 账户中的所有 S3 存储桶,显示:\n- 创建日期和时间\n- 存储桶名称\n\n如输出所示,它列出了所有存储桶及其创建时间戳和名称。该命令跨所有区域工作,并显示您整个 AWS 账户中的存储桶。\n"
}
或执行 AWS CLI 命令:
curl --location 'http://[ALB-URL]/chat' \
--header 'x-api-key: [密钥值]' \
--header 'Content-Type: application/json' \
--data '{
"prompt": "列出我所有的 AWS 存储桶"
}'
{
"answer": "这是您所有的 S3 存储桶: [省略]"
}
或使用 自定义 MCP 服务器 计算一些数学问题:
curl --location 'http://[ALB-URL]/chat' \
--header 'x-api-key: [密钥值]' \
--header 'Content-Type: application/json' \
--data '{
"prompt": "2+2等于多少"
}'
{
"answer": "2 + 2 = **4**\n"
}
有关更多信息,请参阅 CONTRIBUTING。
本库根据 MIT-0 许可证授权。请参阅 LICENSE 文件。