运行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 Antwort
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
EXPERTE
beantwortet vor 8 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen