SageMaker Studio에서 다운로드 버튼을 비활성화하는 방법



많은 기업이 데이터 사이언스 팀의 작업을 지원하기 위해 클라우드 환경을 선택합니다. AWS SageMaker Studio를 선택한 경우 이 기사가 흥미로울 수 있습니다. 데이터 레이크와 데이터 과학자 환경을 모두 갖추면 쉽게 통합할 수 있습니다. 주어진 데이터 과학자가 볼 수 있는 데이터를 선택할 수 있습니다. 데이터 과학자가 SageMaker Studio 환경 내에서만 이 데이터를 사용할 수 있도록 하고 싶을 수 있습니다. 그러나 SageMaker Studio에는 데이터 과학자가 작업한 모든 데이터를 다운로드할 수 있는 다운로드 버튼이 있습니다. 데이터를 컴퓨터에 다운로드한 후에는 어디서나 누구와도 자유롭게 공유할 수 있습니다.

다행히도 이 다운로드 버튼을 비활성화할 수 있습니다. 최근에는 SageMaker 노트북의 다운로드 버튼만 비활성화할 수 있었습니다. This article from Ujjwal Bhardwaj는 SageMaker 노트북에서 비활성화하는 방법을 보여줍니다.

그러나 AWS는 SageMaker Studio를 업데이트했으며 이제 다운로드 버튼도 비활성화할 수 있습니다. 이 업데이트를 통해 JupyterLab 버전 3을 사용하도록 Studio를 구성할 수 있습니다. 이 버전에서 JupyterLab은 다운로드 버튼을 비롯한 일부 기능을 리팩터링했습니다. 이제 이러한 기능은 JupyterLab 코어에 하드코딩된 대신 기본적으로 JupyterLab에 포함된 플러그인입니다. 즉, 이제 이러한 플러그인을 비활성화할 수 있으며 UI에 표시되지 않습니다.

JupyterLab UI에 다운로드 버튼이 포함된 플러그인은 다음과 같습니다.
  • @jupyterlab/docmanager-extension:다운로드
  • @jupyterlab/filebrowser-extension:다운로드

  • 이러한 플러그인을 비활성화하는 몇 가지 방법이 있습니다. 가장 간단한 방법은 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 수명 주기 구성을 생성해야 합니다. 수명 주기 구성은 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 스택 또는 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 도메인에서 사용자 프로필을 생성할 때 수명 주기 구성을 바인딩할 수 있습니다.

    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에 있는 파일을 다운로드하지 못하도록 효과적으로 차단합니다. 또한 다운로드 플러그인을 비활성화하면 인터페이스에서 모든 다운로드 버튼만 제거됩니다. 이것은 파일을 다운로드할 수 있는 다른 수단이 있는 경우 해당 수단도 차단된다는 의미는 아닙니다.

    좋은 웹페이지 즐겨찾기