运行SageMaker备份ebs生命周期进行Amazon Linux 2过渡时出现目录错误。

0

【以下的问题经过翻译处理】 我正在按照AWS提供的这个指南把任务迁移到Amazon Linux 2。

我已经设置了两个必要的生命周期配置并创建了一个新的S3 Bucket来存储备份。我还确保了IAM角色具有所需的S3权限,并按照说明更新了notebook的ebs-backup-bucket标记。

当我使用新配置运行notebook时,我收到以下错误: "Notebook Instance Lifecycle Config [LIFECYCLE ARN] for Notebook Instance [NOTEBOOK ARN] took longer than 5 minutes. Please check your CloudWatch logs for more details if your Notebook Instance has Internet access."

从日志中,我看到有以下错误: /bin/bash: /tmp/OnStart_2022-11-09-01-51ontlqcqt: /bin/bash^M: bad interpreter: No such file or directory

应该如何解决这个问题吗?备份生命周期配置的代码可以在这里找到。

1 回答
0

【以下的回答经过翻译处理】 这个多余的^M符号(即Ctrl-M)阻止了整个脚本被正确解释。

这个问题通常出现在使用MSDOS / Windows系统编写,但在Linux系统中使用的脚本中,因为行结尾的差异。

在基于Unix的操作系统中,行以\n结尾,但MSDOS / Win基于系统以\r\n结尾。

在基于Linux的系统中,您可以通过运行以下命令显示您准备好的脚本

cat -e some-script.sh 

结果将与以下内容类似

#!/bin/bash^M$
... ...^M$

$是常规的Unix行尾符号。 Windows使用一个额外的^M,这个符号不被Unix系统识别。这就是为什么在运行Linux的SageMaker Notebook生命周期配置中,您的脚本被解释为 /bin/bash^M

为了解决此问题,请将脚本转换为基于Unix的结尾并更新生命周期配置。要实现这一点,您可以在Windows中使用Notepad ++。您可以转到“编辑”菜单,选择“EOL Conversion”子菜单,然后从出现的选项中选择“UNIX / OSX格式”。下次保存文件时,一切顺利的话,其行结尾将以UNIX样式的行结尾保存。

或者,您可以将脚本放在Linux环境中,例如具有Amazon Linux 2的EC2实例,并通过sudo yum install dos2unix安装dos2unix。安装后,您可以通过以下方式转换文件

dos2unix -n file.sh  output.sh 

转换后,请使用新脚本更新LCC。您可以通过以下方式验证^M已经被删除了

cat -e your_script.sh

该输出将打印出所有特殊字符。

profile picture
专家
已回答 1 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则