Многие предприятия выбирают облачную среду для обеспечения работы своей команды специалистов по анализу данных. Если вы выбрали AWS SageMaker Studio, эта статья может вас заинтересовать. Наличие как озера данных, так и среды data scientist позволяет легко интегрировать их. Вы можете выбирать, какие данные сможет видеть каждый конкретный специалист по анализу данных. Возможно, вы захотите, чтобы специалист по анализу данных мог использовать эти данные только в среде SageMaker Studio. Однако в SageMaker Studio есть кнопка загрузки, которая позволяет специалистам по изучению данных загружать любые данные, над которыми они работали. После загрузки данных на свой компьютер они могут свободно делиться ими где угодно и с кем угодно.
К счастью, эту кнопку загрузки можно отключить. Недавно отключить кнопку загрузки можно было только в блокнотах SageMaker. В этой статье от Ujjwal Bhardwaj показано, как отключить ее в SageMaker Notebooks.
Но AWS обновила SageMaker Studio, и теперь в ней также можно отключить кнопку загрузки. Это обновление позволяет нам настроить Studio на использование JupyterLab версии 3. В этой версии JupyterLab переработал некоторые функции, включая кнопку загрузки. Теперь эти функции являются плагинами, включенными в JupyterLab по умолчанию, а не жестко закодированными в ядре JupyterLab. Это означает, что теперь эти плагины можно отключить, и они не будут отображаться в пользовательском интерфейсе.
Плагины, которые включают кнопку загрузки в пользовательском интерфейсе JupyterLab, следующие:
- @jupyterlab/docmanager-extension:download
- @jupyterlab/filebrowser-extension:download
Есть несколько способов отключить эти плагины. Самый простой — выполнить эти команды в терминале SageMaker Studio:
conda activate studio
jupyter labextension disable jupyterlab/docmanager-extension:download
jupyter labextension disable @jupyterlab/filebrowser-extension:download
restart-jupyter-server
Вы также можете использовать файлы конфигурации JupyterLab. Отредактируйте файл /opt/conda/envs/studio/etc/jupyter/labconfig/page_config.json
со следующим содержимым:
{
"disabledExtensions": {
"@jupyterlab/docmanager-extension:download": true,
"@jupyterlab/filebrowser-extension:download": true
}
}
и выполните команду:
restart-jupyter-server
Возможно, вам также придется обновить страницу, чтобы увидеть, что изменения произошли.
Проблема этих подходов заключается в том, что изменения будут действовать только в течение сеанса. Чтобы сделать изменения постоянными, необходимо создать конфигурацию жизненного цикла Studio Lifecycle Configuration. Конфигурация жизненного цикла будет выполнять сценарий при запуске JupyterServer. В этом скрипте вы отредактируете файл из предыдущего примера.
Содержание сценария будет следующим:
echo "{" > /opt/conda/envs/studio/etc/jupyter/labconfig/page_config.json
echo " \"disabledExtensions\": {" >> /opt/conda/envs/studio/etc/jupyter/labconfig/page_config.json
echo " \"@jupyterlab/docmanager-extension:download\": true," >> /opt/conda/envs/studio/etc/jupyter/labconfig/page_config.json
echo " \"@jupyterlab/filebrowser-extension:download\": true" >> /opt/conda/envs/studio/etc/jupyter/labconfig/page_config.json
echo " }" >> /opt/conda/envs/studio/etc/jupyter/labconfig/page_config.json
echo "}" >> /opt/conda/envs/studio/etc/jupyter/labconfig/page_config.json
restart-jupyter-server
Существует множество способов создания конфигурации жизненного цикла. Вы можете сделать это через консоль, используя Cloudformation Stack, или через AWS CLI. Используя CLI, вы можете сделать следующее:
aws sagemaker create-studio-lifecycle-config
--region <your-region>
--studio-lifecycle-config-name my-studio-lcc
--studio-lifecycle-config-content $LCC_CONTENT
--studio-lifecycle-config-app-type JupyterServer
$LCC_CONTENT — это строка с содержимым скрипта, описанного ранее. Затем, при создании профиля пользователя в домене SageMaker Domain, вы можете привязать к нему конфигурацию Lifecycle Configuration:
aws sagemaker create-user-profile --domain-id <DOMAIN-ID>
--user-profile-name <USER-PROFILE-NAME>
--region <REGION>
--user-settings '{ "JupyterServerAppSettings": { "LifecycleConfigArns": ["<LIFECYCLE-CONFIGURATION-ARN-LIST>"] } }'
С этого момента каждый раз, когда специалист по обработке данных открывает свой экземпляр SageMaker Studio, он никогда не должен отображать кнопку загрузки. Это эффективно блокирует загрузку любых файлов, расположенных в их Studio, до тех пор, пока они не смогут самостоятельно отменить эти изменения со своего терминала. Также обратите внимание, что отключение плагина загрузки только удаляет все кнопки загрузки из интерфейса. Это не означает, что если существуют другие способы загрузки файлов, они также будут заблокированы.