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

如何通过GitHub Actions连接AWS实例执行.sh脚本实现DB同步

实现GitHub Actions触发AWS实例执行同步脚本的方案

前置准备

  • EC2 SSH密钥配置:
    • 生成EC2 SSH密钥对(或使用现有密钥),将私钥内容存入GitHub仓库的Secrets(路径:仓库Settings → Secrets and variables → Actions → New repository secret),命名为AWS_EC2_SSH_KEY
    • 将公钥添加到AWS EC2实例的~/.ssh/authorized_keys文件中,确保能通过SSH无密码登录
  • EC2安全组配置:
    • 开放22端口(SSH),允许GitHub Actions的IP段访问;测试阶段可临时允许0.0.0.0/0,生产环境需严格限制IP范围
  • 脚本权限确认:
    • 在AWS EC2实例上,给目标.sh文件添加执行权限:chmod +x /path/to/your/sync_script.sh

编写GitHub Actions工作流文件

在你的GitHub仓库根目录创建.github/workflows/database_sync.yml文件,内容如下:

name: 数据库同步触发
on:
  # 触发条件:当向指定分支推送资源时触发,可根据实际需求修改分支名或路径
  push:
    branches:
      - main
    # 若资源存放在特定路径下,可添加路径过滤,仅当推送db1资源时触发
    # paths:
    #   - 'db1-resources/**'

jobs:
  sync-database:
    runs-on: ubuntu-latest
    steps:
      # 可选步骤:若工作流需要用到仓库代码,添加此步骤检出代码
      # - name: 检出代码
      #   uses: actions/checkout@v4

      - name: 连接AWS EC2并执行同步脚本
        uses: appleboy/ssh-action@v1.0.3
        with:
          host: ${{ secrets.AWS_EC2_HOST }}  # EC2公网IP或域名,需预先存入Secrets
          username: ${{ secrets.AWS_EC2_USER }}  # EC2登录用户(如ubuntu/ec2-user),存入Secrets
          key: ${{ secrets.AWS_EC2_SSH_KEY }}  # 预先存入的SSH私钥
          # 执行命令:进入目标文件夹并运行脚本
          script: |
            cd /path/to/target/folder  # 替换为你的.sh文件所在的目标文件夹路径
            ./sync_script.sh  # 替换为你的.sh文件名

关键说明

  • 触发条件调整:根据实际业务需求修改on.push.branches或paths,确保只有当开发者推送指定数据库资源时才触发同步流程
  • 敏感信息保护:所有敏感信息(EC2地址、用户名、SSH密钥)必须存入GitHub Secrets,禁止硬编码在工作流文件中
  • 脚本预验证:先手动通过SSH登录EC2,执行cd /path/to/target/folder && ./sync_script.sh,确认脚本能正常运行后再配置Actions

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 20:50:31