python-3.x - 如何使用 AWS Lambda 在 AWS Sagemaker 中远程启动 Jupyter Notebook

标签 python-3.x amazon-web-services aws-lambda amazon-sagemaker

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

我研究过使用 API 并将 Sagemaker 转变为端点,但没有成功。

*编辑抱歉,如果问题有点模糊。我在 Juypter 上的笔记本上写了很多代码。我理想地寻找的是,当文件上传到“RandomFile”时,笔记本中的代码将运行。我希望通过设置基于 S3 的触发器来使用 AWS Lambda 来实现此目的。

最佳答案

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

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

基于SQS的解决方案

  1. 配置您的S3 bucket to send Event Notifications to send messages to an SQS queue .
  2. 在 SageMaker Notebook 实例上配置一个 cron 作业,持续轮询队列中的工作。
  3. 当轮询器检测到消息时,在笔记本上执行 nbconvert 或 papermill(按照 Guy 的建议)。
  4. 配置CloudWatch Alarm on the size of your SQS队列,因此如果您的 cron 作业不再工作,您会收到警报。

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

Lambda 和 Step Functions 解决方案

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

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

其他解决方案

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

关于python-3.x - 如何使用 AWS Lambda 在 AWS Sagemaker 中远程启动 Jupyter Notebook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57663282/

相关文章:

java - 如何保护将由 Java 应用程序调用的 AWS API Gateway 终端 Node ?

aws-lambda - AWS Lambda 触发器没有云端

python - 如何使用对象/方法对的回调函数

python - 如何在 Python 中导入第三方模块?

python-3.x - 值错误 : Could not find a format to read the specified file in mode 'i'

ssl - 上传后 UI 中未显示 CloudFront SSL 证书

ruby-on-rails-3 - Resque 来自其他主机的 Worker 在我的系统上注册并处于事件状态

javascript - 如何解码/解析 Cognito 返回给我的访问和 ID token ?

python-2.7 - 使用 Lambda 在 ec2 上执行脚本时出现问题

python - 没有 self 作为第一个参数的 python 方法