Я пытаюсь настроить конфигурации жизненного цикла для ноутбуков Sagemaker через aws api через boto3.Из документов он читает, что необходимо предоставить строку конфигурации в кодировке base64.
Я использую следующий код:
with open(lifecycleconfig.sh, 'rb') as fp:
file_content = fp.read()
config_string = base64.b64encode(file_content).decode('utf-8')
boto3.client('sagemaker').create_notebook_instance_lifecycle_config(
NotebookInstanceLifecycleConfigName='mylifecycleconfig1',
OnCreate=[
{
'Content': config_string
},
],
)
С некоторыми lifecycleconfig.sh
:
#!/bin/bash
set -e
Это создает конфигурацию жизненного цикла, которая отображается в веб-интерфейсе и содержимое которой, по-видимому, идентично созданию конфигурации вручную: image .
Однако ноутбуки, использующие конфигурацию жизненного цикла, созданные с помощью boto3, не запустятся, и в файле журнала отобразится ошибка:
/home/ec2-user/SageMaker/create_script.sh: line 2: $'\r': command not found
/home/ec2-user/SageMaker/create_script.sh: line 3: set: -
set: usage: set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
Более того, если я скопирую, вставлю содержимое поврежденной конфигурации и создам новую конфигурацию вручную,новый также теперь не запускается.
Как мне кодировать bash-скрипт для рабочей конфигурации жизненного цикла aws?