You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让GitHub Action访问禁止外部连接的RDS数据库?

通过EC2 SSH隧道执行Prisma迁移的解决方案

由于RDS仅允许内部IP或关联EC2实例访问,GitHub Action的外部IP无法直接连接数据库,通过EC2建立SSH隧道是可行的解决办法,以下是具体实现步骤:

准备工作

先在GitHub仓库的「Settings → Secrets and variables → Actions」中添加以下机密变量:

  • EC2_SSH_KEY:EC2实例的PEM格式私钥
  • EC2_HOST:EC2实例的公网IP或域名
  • EC2_USER:EC2的登录用户名(如ubuntu或ec2-user)
  • RDS_HOST:RDS实例的内网地址
  • RDS_PORT:RDS的服务端口(PostgreSQL默认5432,MySQL默认3306)
  • DATABASE_URL:修改为隧道本地地址,例如postgresql://用户名:密码@localhost:5432/数据库名

修改后的GitHub Action配置

替换原有的Action文件为以下内容:

name: Deploy Prisma Migration
on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - master

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: 检出代码仓库
        uses: actions/checkout@v3

      - name: 配置Node环境
        uses: actions/setup-node@v3
        with:
          node-version: 20 # 替换为你的项目使用的Node.js版本

      - name: 安装项目依赖
        run: npm install

      - name: 建立EC2 SSH隧道
        run: |
          # 配置SSH环境,跳过首次连接的主机密钥验证
          mkdir -p ~/.ssh
          echo "${{ secrets.EC2_SSH_KEY }}" > ~/.ssh/ec2_key.pem
          chmod 600 ~/.ssh/ec2_key.pem
          echo -e "Host ec2-tunnel\n  HostName ${{ secrets.EC2_HOST }}\n  User ${{ secrets.EC2_USER }}\n  IdentityFile ~/.ssh/ec2_key.pem\n  StrictHostKeyChecking no" > ~/.ssh/config
          # 将本地端口转发到RDS内网地址,后台运行隧道
          ssh -f -N -L localhost:${{ secrets.RDS_PORT }}:${{ secrets.RDS_HOST }}:${{ secrets.RDS_PORT }} ec2-tunnel

      - name: 执行Prisma迁移
        run: npx prisma migrate deploy
        env:
          DATABASE_URL: ${{ secrets.DATABASE_URL }}

关键注意事项

  1. EC2安全组配置:确保EC2的安全组入站规则允许GitHub Actions的IP访问22端口(SSH)。如果嫌手动维护IP段麻烦,可临时开放0.0.0.0/0(不推荐生产环境),或查询GitHub官方公布的Actions IP范围添加到规则中。
  2. EC2与RDS的网络连通性:EC2实例的安全组需允许访问RDS的服务端口,且两者处于同一VPC内(或通过VPC peering连通)。
  3. 私钥格式验证:确保EC2_SSH_KEY是完整的PEM格式,无多余换行或格式错误。

内容的提问来源于stack exchange,提问作者n9p4

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 05:40:25