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

如何批量用最新Git仓库变更更新所有Sagemaker Jupyter Notebook?

批量更新关联Git仓库的SageMaker Jupyter Notebook实例

当然有批量更新的方法,以下是几种实用的方案:

方案1:利用SageMaker生命周期配置(Lifecycle Configurations)

这是官方推荐的批量管理实例启动/运行脚本的方式,可以让实例在启动时自动拉取Git仓库的最新代码,后续重启实例就能同步变更。

  1. 创建生命周期启动脚本
    编写一个bash脚本,内容如下(替换仓库路径和分支名):

    #!/bin/bash
    set -e
    
    # 切换到你的Git仓库所在目录(默认Notebook工作目录是/home/ec2-user/SageMaker)
    REPO_DIR="/home/ec2-user/SageMaker/your-training-repo"
    if [ -d "$REPO_DIR" ]; then
        cd "$REPO_DIR"
        # 拉取指定分支的最新代码,这里以main为例
        git pull origin main
    fi
    
  2. 将脚本关联到目标Notebook实例

    • 登录AWS控制台,进入SageMaker服务
    • 导航到「生命周期配置」页面,创建新的配置,将上述脚本作为「启动脚本」上传
    • 批量选中所有需要更新的Notebook实例,修改它们的生命周期配置为你刚创建的那个
    • 批量重启这些实例,重启完成后代码就会自动同步

方案2:用AWS CLI结合SSM Run Command远程执行git pull

如果不想重启实例,可以通过SSM直接在运行中的实例上执行命令,前提是你的Notebook实例已经启用了SSM访问(默认情况下,创建实例时如果选择了默认IAM角色,会包含SSM权限)。

  1. 筛选目标实例
    用标签或实例名称前缀筛选出所有需要更新的实例ID,比如:

    # 按标签筛选,替换成你的标签键值对
    aws sagemaker list-notebook-instances --query "NotebookInstances[?Tags[?Key=='Training-Course' && Value=='ML-101']].NotebookInstanceId" --output text
    
  2. 批量执行git pull命令
    通过SSM发送命令到目标实例:

    aws ssm send-command \
        --document-name "AWS-RunShellScript" \
        --targets "Key=tag:Training-Course,Values=ML-101" \
        --parameters '{"commands": ["cd /home/ec2-user/SageMaker/your-training-repo && git pull origin main"]}'
    

    执行后可以通过SSM控制台查看命令执行状态,确认所有实例是否拉取成功。

注意事项

  • 确保实例的IAM角色有足够权限:如果用SSM方案,需要AmazonSSMManagedInstanceCore权限;如果是私有Git仓库,需要提前在实例上配置访问凭证(比如SSH密钥、HTTPS用户名密码),或者用AWS CodeCommit并通过IAM角色授权访问。
  • 如果仓库有未提交的本地修改,git pull可能会失败,可以在脚本中添加git stash暂存修改,或者根据需求调整逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:12:52