如何使用 AWS Lambda 在 AWS Sagemaker 中远程启动 Juypter Notebook



我在 AWS Sagemaker 中设置了一个 Juypter Notebook。我想找到一种方法,在将新文件上传到某个文件夹(因此是 AWS Lambda(时,在自主触发器上启动此笔记本。我一直在寻找是否有一种简化的方法来使用 AWS Lambda 触发器触发 Juypter Notebook。

我已经考虑过使用 API 并将 Sagemaker 变成端点,但它没有奏效。

*编辑 对不起,如果问题有点模糊。我在Juypter的笔记本上编写了大量代码。我理想中寻找的是,当文件上传到"RandomFile"时,笔记本中的代码将运行。我希望通过设置基于 S3 的触发器来使用 AWS Lambda 执行此操作。

感謝您使用 Amazon SageMaker! 非常有趣的用例!

目前,没有任何直接方法可以在基于 S3 的触发器上触发 Jupyter 笔记本的执行,但有几种方法可以实现此目的:

基于 SQS 的解决方案

  1. 将 S3 存储桶配置为发送事件通知,以将消息发送到 SQS 队列。
  2. 在您的 SageMaker 笔记本实例上配置一个 cron 作业,该作业会持续轮询队列以查找工作。
    • 基于 shell 脚本的示例 SQS 轮询器 - 当然任何语言都可以使用。
    • 生命周期配置中 cron 作业的示例配置
  3. 当轮询器检测到消息时,在笔记本上执行 nbconvert 或造纸厂(如 Guy 建议的那样(。
  4. 根据 SQS 队列的大小配置 CloudWatch 警报,以便在 cron 作业不再工作时收到警报。

然后,只需让笔记本实例始终保持正常运行,它应该会检测对象何时上传到 S3。

λ和阶跃函数解决方案

此解决方案稍微复杂一些,但如果您不希望笔记本实例始终运行,则具有更具成本效益的优势。

  1. 使用生命周期配置配置笔记本实例,该配置执行以下操作:
    1. 从 S3 拉取文件
    2. 在后台运行 nbconvert。
    3. 将 nbconvert 的结果上传到 S3。
  2. 将您的 S3 存储桶配置为向 Amazon Step Functions 发送事件通知。
  3. 创建一个步骤函数状态机,其中包含以下步骤:
    1. 启动笔记本实例
    2. 等待 nbconvert 的结果上传到 S3。
    3. 停止笔记本实例。

其他解决方案

  • 使用 nbconvert RESTful API。 nbconvert API 可在/api/nbconvert 中找到,但据我所知,它没有很好的文档记录。 要在 Lambda 函数中执行此操作,您可以获取笔记本实例的预签名 URL,然后通过 Python 请求库(或类似库(与此 API 交互。 但是,我还没有测试过这个,所以YMMV。

相关内容

  • 没有找到相关文章

最新更新