将 Amazon Sagemaker Notebook 实例连接到 Git 远程存储库中的特定 S3 存储桶和特定子目录

问题描述

这是一个非常棘手的问题。

我对 Amazon Sagemaker 非常陌生,我似乎无法找到此问题的任何答案。我不知道我想做的事情是否可行。

基本上,假设我在 Amazon Sagemaker 上有一个笔记本实例,我想将此笔记本实例自动连接到:

  • 特定的 S3 存储桶(甚至是 S3 存储桶内的特定子目录)
  • 远程 Git 存储库中的特定子目录 (托管在 GitHub/BitBucket/其他平台中)

而且每次启动笔记本实例时都必须自动完成。这样的事情有可能吗?

我尝试查看生命周期配置,但由于我不完全了解它的功能,我不知道是否可以使用生命周期配置 bash 脚本来做到这一点。

如果有人知道如何做类似的事情,我对其他想法非常开放,即使这意味着我必须修改 AWS CLI/Sagemaker SDK/API/GitHub 和 BitBucket API,以及其他 AWS 服务,如 lambda,等

提前致谢!

解决方法

不完全确定将特定 S3 存储桶“连接”到 Notebook 实例是什么意思,但假设您想将内容下载到实例的底层 EBS 卷。对于 git,我的假设是您想从存储库中克隆特定的子文件夹。

为了自动执行所有这些操作,您可以使用生命周期配置脚本,正如您所提到的。对于 S3,您可以从 LCC 脚本调用 AWS CLI 来下载特定对象或整个存储桶/前缀(对于多个文件,请使用 aws s3 sync 命令)。这里唯一需要注意的是,您为 Notebook 实例设置的执行角色必须对这些 S3 对象具有读取访问权限。此角色决定您可以从笔记本实例访问哪些内容(而不是为您的 IAM 用户设置的策略)。

对于 git 存储库克隆,您可以从 LCC 脚本中调用 git 命令。很长一段时间以来,仅从存储库中克隆一个子文件夹是不可能的,但最终有一个解决方案,请参阅以下帖子: How do I clone a subdirectory only of a Git repository?