如何在新版Amazon SageMaker Studio中启用自动关闭生命周期配置?
解决新版Amazon SageMaker Studio生命周期配置(LCC)执行失败问题
1. 修复基础测试脚本的问题
你的测试脚本使用了set -eux,其中-e会在任意命令返回非零值时立即终止脚本。而新版Studio的JupyterServer环境在脚本执行阶段可能存在默认的非零返回操作,导致脚本提前退出,进而卡住空间启动流程。
修改测试脚本,调整错误处理逻辑,并将输出写入本地日志文件(方便直接排查):
#!/bin/bash set -ux echo "Hello from new Studio" >> /var/log/sagemaker-studio.log
2. 修正Terraform配置中的LCC关联方式
新版SageMaker Studio的**空间(Space)**是独立资源,LCC需要直接绑定到Space资源,而非仅在用户配置的全局jupyter_lab_app_settings中设置。Terraform配置示例:
resource "aws_sagemaker_space" "test_space" { domain_id = aws_sagemaker_domain.main.id space_name = "test-space" space_settings { jupyter_server_app_settings { lifecycle_config_arns = [aws_sagemaker_studio_lifecycle_config.test_lcc.arn] } } } resource "aws_sagemaker_studio_lifecycle_config" "test_lcc" { studio_lifecycle_config_name = "test-lcc" studio_lifecycle_config_app_type = "JupyterServer" studio_lifecycle_config_content = base64encode(<<EOF #!/bin/bash set -ux echo "Hello from new Studio" >> /var/log/sagemaker-studio.log EOF ) }
注意:新版Studio的LCC关联逻辑与Classic版完全不同,必须直接绑定到目标Space资源。
3. 适配自动关闭空闲笔记本的脚本
新版Studio的Kernel管理路径与Classic版不同,原自动关闭脚本需要调整。示例适配脚本:
#!/bin/bash set -ux # 设置空闲超时时间(单位:分钟) IDLE_TIMEOUT=30 # 获取所有运行中的Kernel ID KERNEL_IDS=$(jupyter kernelspec list --json | jq -r '.kernels[] | .name') for KERNEL_ID in $KERNEL_IDS; do # 获取Kernel最后活动时间 IDLE_TIME=$(jupyter kernel list --json | jq -r ".kernels[] | select(.id == \"$KERNEL_ID\") | .last_activity") # 计算时间差 CURRENT_TIMESTAMP=$(date +%s) KERNEL_TIMESTAMP=$(date -d "$IDLE_TIME" +%s) DIFF=$(( (CURRENT_TIMESTAMP - KERNEL_TIMESTAMP) / 60 )) if [ $DIFF -ge $IDLE_TIMEOUT ]; then echo "Shutting down idle kernel: $KERNEL_ID" >> /var/log/sagemaker-studio.log jupyter kernel stop "$KERNEL_ID" fi done
如果环境缺少jq工具,可在脚本开头添加yum install -y jq(针对Amazon Linux环境)。
4. 排查启动卡住的方法
若空间仍无法启动,可通过以下方式排查:
- 通过SSM会话管理器连接到Studio对应的EC2实例
- 查看本地日志文件:
/var/log/sagemaker-studio.log:Studio应用运行日志/var/log/sagemaker-lcc.log:LCC脚本执行日志
这些日志会直接显示脚本执行时的错误,比如依赖缺失、权限不足等问题。
内容的提问来源于stack exchange,提问作者Grey
相关产品推荐
相关产品推荐

