AWS连接服务器

一个类似AWS CLI的连接AWS账户的服务器,支持多种AWS服务操作和凭证管理。

  • by rupeedev
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 Rupeebw/aws-mcp-server

使用说明

AWS MCP服务器

与AWS CLI类似的连接到AWS帐户的服务器。

特性

  • 使用凭据连接到AWS帐户
  • 支持多种AWS服务
  • 类似于AWS CLI的凭据管理
  • 基于配置文件的配置

文件夹结构

src/aws-mcp-server/
├── .env.example           # Example environment variables
├── .gitignore             # Git ignore file
├── README.md              # Documentation
├── package.json           # Project dependencies
└── src/                   # Source code
    ├── config/            # Configuration files
    │   └── aws-config.js  # AWS SDK configuration
    ├── core/              # Core functionality (empty for now)
    ├── index.js           # Main entry point
    ├── services/          # AWS service implementations
    │   ├── ec2.js         # EC2 service endpoints
    │   ├── lambda.js      # Lambda service endpoints
    │   └── s3.js          # S3 service endpoints
    └── utils/             # Utility functions
        ├── logger.js      # Logging utility
        └── session-manager.js # AWS session management

设置

  1. 安装依赖项:
npm install
  1. 配置AWS凭据:

    • 创建一个 .env 文件基于 .env.example
    • 或使用AWS凭据文件 ~/.aws/credentials
  2. 设置Git挂钩以防止提交机密:

./scripts/setup-git-hooks.sh
  1. 启动服务器:
npm start

配置

服务器支持多种配置AWS凭据的方法:

  1. 环境变量
  2. AWS凭据文件(~/.AWS/凭据)
  3. AWS配置文件(~/.AWS/config)
  4. 实例配置文件(在EC2上运行时)

临时凭据

如果您使用的是临时AWS凭据(访问密钥ID以“ASIA”开头),请确保在您的 .env 文件:

AWS_ACCESS_KEY_ID=your_access_key
AWS_SECRET_ACCESS_KEY=your_secret_key
AWS_SESSION_TOKEN=your_session_token
AWS_REGION=your_region

安全

该项目包括几种安全措施,以防止意外暴露凭据:

  1. .gitignore:配置为排除 .env 文件、密钥、证书和其他敏感文件
  2. Git挂钩:预提交钩子,用于检查代码库中的潜在秘密
  3. 机密检查器:用于扫描潜在硬编码秘密的脚本

要手动运行机密检查,请执行以下操作:

./scripts/check-secrets.sh

用法

服务器公开REST API以与AWS服务交互:

S3操作

  • GET /api/s3/buckets -列出所有S3存储桶
  • GET /api/s3/buckets/:bucket/objects -列出bucket中的对象
  • POST /api/s3/buckets/:bucket/objects -将对象上传到bucket
  • DELETE /api/s3/buckets/:bucket/objects/:key -从bucket中删除对象

EC2操作

  • GET /api/ec2/instances -列出所有EC2实例
  • GET /api/ec2/instances/:instanceId -获取EC2实例详细信息
  • POST /api/ec2/instances/:instanceId/start -启动EC2实例
  • POST /api/ec2/instances/:instanceId/stop -停止EC2实例

Lambda操作

  • GET /api/lambda/functions -列出所有Lambda函数
  • GET /api/lambda/functions/:functionName -获取Lambda函数详细信息
  • POST /api/lambda/functions/:functionName/invoke -调用Lambda函数
  • PATCH /api/lambda/functions/:functionName/configuration -更新Lambda函数配置

与AWS MCP服务器交互的方法:

  1. 从命令行使用curl:

    # List S3 buckets
    curl http://localhost:3000/api/s3/buckets
    
    # List EC2 instances
    curl http://localhost:3000/api/ec2/instances
    
    # List Lambda functions
    curl http://localhost:3000/api/lambda/functions
    
  2. 使用像Postman这样的REST客户端:

    • 设置对端点的请求,如:
      • 获取http://localhost:3000/api/s3/buckets
      • 获取http://localhost:3000/api/ec2/instances
      • 发布http://localhost:3000/api/lambda/functions/my-函数/调用(带JSON正文)
  3. 使用网络浏览器 (仅适用于GET请求):

    • 引导到http://localhost:3000/health检查服务器是否正在运行
    • 引导到http://localhost:3000/api/s3/buckets查看您的S3存储桶
  4. 构建前端应用程序:

    • 您可以创建一个前端应用程序来调用此服务器的API
    • 这将为您提供一个类似于AWS管理控制台的GUI

AWS凭据故障排除:

如果您在使用AWS凭据时遇到问题,以下是一些选项:

  1. 用于临时凭据(访问密钥以ASIA开头):

    • 确保在.env文件中包含AWS_SESSION_TOKEN
    • 这些凭据通常在几个小时后过期
  2. 使用长期凭据(访问密钥以AKIA开头):

    • 这些不需要会话令牌
    • 小心这些凭据,永远不要将其提交给版本控制
  3. 使用AWS CLI配置文件:

    • 如果您已配置AWS CLI,则可以使用配置文件:
    AWS_PROFILE=your-profile-name
    
    • 从.env中删除AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY
  4. 如果在EC2上运行,请使用IAM角色:

    • 如果将其部署到具有IAM角色的EC2实例,则不需要指定凭据

发展

npm run dev

测试

npm test