

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# LCC 스크립트를 사용하여 SageMaker 노트북 인스턴스 사용자 지정
<a name="notebook-lifecycle-config"></a>

**중요**  
Amazon SageMaker Studio 또는 Amazon SageMaker Studio Classic에서 Amazon SageMaker 리소스를 만들도록 허용하는 사용자 지정 IAM 정책은 해당 리소스에 태그를 지정할 수 있는 권한도 부여해야 합니다. Studio와 Studio Classic은 만드는 리소스에 태그를 자동으로 지정하기 때문에 리소스에 태그를 추가할 권한이 필요합니다. IAM 정책이 Studio 및 Studio Classic에서 리소스를 만들도록 허용하지만 태그 지정은 허용하지 않는 경우 리소스 만들기를 시도할 때 'AccessDenied' 오류가 발생할 수 있습니다. 자세한 내용은 [SageMaker AI 리소스 태그 지정을 위한 권한 제공](security_iam_id-based-policy-examples.md#grant-tagging-permissions) 섹션을 참조하세요.  
SageMaker 리소스를 만들 수 있는 권한을 부여하는 [AWS Amazon SageMaker AI에 대한 관리형 정책](security-iam-awsmanpol.md)에는 해당 리소스를 만드는 동안 태그를 추가할 수 있는 권한이 이미 포함되어 있습니다.

*수명 주기 구성*(LCC)은 노트북 인스턴스를 만들거나 매번 노트북 인스턴스를 시작할 때만 쉘 스크립트를 제공합니다. 노트북 인스턴스를 만들 때 새 LCC를 만들거나 이미 가지고 있는 LCC를 연결할 수 있습니다. 수명 주기 구성 스크립트는 다음 사용 사례에 유용합니다.
+ 노트북 인스턴스에 패키지 또는 샘플 노트북 설치
+ 노트북 인스턴스의 네트워킹 및 보안 구성
+ 쉘 스크립트를 사용하여 노트북 인스턴스 사용자 지정

수명 주기 구성 스크립트를 사용하여 노트북에서 AWS 서비스에 액세스할 수도 있습니다. 예를 들어 노트북을 사용하여 Amazon EMR 인스턴스와 같은 다른 AWS 리소스를 제어할 수 있는 스크립트를 생성할 수 있습니다.

[https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples](https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples) 노트북 인스턴스를 사용자 지정하기 위한 일반적인 사용 사례를 다루는 노트북 수명 주기 구성 스크립트의 퍼블릭 리포지토리를 유지 관리합니다.

**참고**  
각 스크립트의 최대 글자 수는 16,384자입니다.  
모든 스크립트에서 이용 가능한 `$PATH`환경 변수의 값은 `/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin`입니다. `$PWD` 환경 변수의 값인 작업 디렉터리는 `/`입니다.  
로그 스트림 `[notebook-instance-name]/[LifecycleConfigHook]`의 로그 그룹 `/aws/sagemaker/NotebookInstances`에서 노트북 인스턴스 수명 주기 구성에 대한 CloudWatch Logs를 확인하세요.  
스크립트는 5분 이상 실행할 수 없습니다. 스크립트가 5분 이상 실행되는 경우 스크립트가 실패하고 노트북 인스턴스가 생성 또는 시작되지 않습니다. 스크립트 실행 시간을 줄이기 위해 다음을 시도할 수 있습니다.  
필요한 단계를 줄입니다. 예를 들어 대규모 패키지를 설치할 conda 환경을 제한합니다.
작업을 병렬 프로세스로 실행합니다.
스크립트에 `nohup`명령을 사용합니다.

SageMaker AI 콘솔에서 **수명 주기 구성**을 선택하여 이전에 생성한 노트북 인스턴스 수명 주기 구성 목록을 볼 수 있습니다. 새 노트북 인스턴스를 만들 때 노트북 인스턴스 LCC를 연결할 수 있습니다. 노트북 인스턴스를 생성하는 방법에 대한 자세한 내용은 [Amazon SageMaker 노트북 인스턴스 만들기](howitworks-create-ws.md)을 참조하세요.

## 수명 주기 구성 모범 사례
<a name="nbi-lifecycle-config-bp"></a>

다음은 수명 주기 구성 사용에 대한 모범 사례입니다.

**중요**  
수명 주기 구성 스크립트에 민감한 정보를 저장하지 않을 것을 권장합니다.

**중요**  
수명 주기 구성 스크립트는 노트북 사용자의 루트 액세스 설정에 관계없이 루트 액세스 및 노트북 인스턴스의 IAM 실행 역할 권한으로 실행됩니다. 수명 주기 구성을 생성 또는 수정하고 노트북 인스턴스를 업데이트할 수 있는 권한이 있는 보안 주체는 실행 역할의 자격 증명으로 코드를 실행할 수 있습니다. 자세한 정보는 [SageMaker 인스턴스에 대한 루트 액세스 제어](nbi-root-access.md)을 참조하세요.
+ 수명 주기 구성은 `root`사용자로 실행됩니다. 스크립트가 `/home/ec2-user/SageMaker`디렉터리 내의 내용을 변경하는 경우(예: `pip`를 사용하여 패키지 설치) `sudo -u ec2-user`명령을 사용하여 `ec2-user`사용자로서 실행합니다. 이 사용자는 Amazon SageMaker AI가 실행되는 사용자와 동일합니다.
+ SageMaker AI 노트북 인스턴스는 `conda` 환경을 사용하여 Jupyter Notebook에 대한 다양한 커널을 구현합니다. 하나 이상의 노트북 커널에 사용할 수 있는 패키지를 설치하려는 경우 명령을 묶어서 패키지를 설치할 커널이 포함된 conda 환경을 활성화하는 `conda`환경 명령을 사용하여 패키지를 설치합니다.

  예를 들어, `python3`환경에만 패키지를 설치하려는 경우 다음 코드를 사용합니다.

  ```
  #!/bin/bash
  sudo -u ec2-user -i <<EOF
  
  # This will affect only the Jupyter kernel called "conda_python3".
  source activate python3
  
  # Replace myPackage with the name of the package you want to install.
  pip install myPackage
  # You can also perform "conda install" here as well.
  
  source deactivate
  
  EOF
  ```

  노트북 인스턴스의 모든 conda 환경에 패키지를 설치하려는 경우 다음 코드를 사용합니다.

  ```
  #!/bin/bash
  sudo -u ec2-user -i <<EOF
  
  # Note that "base" is special environment name, include it there as well.
  for env in base /home/ec2-user/anaconda3/envs/*; do
      source /home/ec2-user/anaconda3/bin/activate $(basename "$env")
  
      # Installing packages in the Jupyter system environment can affect stability of your SageMaker
      # Notebook Instance.  You can remove this check if you'd like to install Jupyter extensions, etc.
      if [ $env = 'JupyterSystemEnv' ]; then
        continue
      fi
  
      # Replace myPackage with the name of the package you want to install.
      pip install --upgrade --quiet myPackage
      # You can also perform "conda install" here as well.
  
      source /home/ec2-user/anaconda3/bin/deactivate
  done
  
  EOF
  ```
+ 모든 Conda 환경을 기본 환경 폴더(/home/user/anaconda3/envs)에 저장해야 합니다.

**중요**  
스크립트를 만들거나 변경하는 경우, 노트북을 만들 때 콘솔에서 사용할 수 있는 텍스트 편집기와 같이 Unix 스타일의 줄 바꿈 기능이 있는 텍스트 편집기를 사용하는 것이 좋습니다. Linux 외 운영 체제에서 텍스트를 복사할 경우 호환되지 않는 줄 바꿈이 포함되어 있어 예기치 않은 오류가 발생할 수 있습니다.