

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

# JupyterLab 관리자 안내서
<a name="studio-updated-jl-admin-guide"></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)에는 해당 리소스를 만드는 동안 태그를 추가할 수 있는 권한이 이미 포함되어 있습니다.

관리자를 위한 이 안내서에서는 Amazon Elastic Block Store(Amazon EBS) 및 Amazon Elastic Compute Cloud(Amazon EC2)의 리소스와 같은 SageMaker AI JupyterLab 리소스에 대해 설명합니다. 또한 이 주제에서는 사용자 액세스를 제공하고 스토리지 크기를 변경하는 방법을 보여줍니다.

SageMaker AI JupyterLab 스페이스는 다음 리소스로 구성됩니다.
+ 코드 및 환경 변수와 같은 모든 데이터를 저장하는 고유한 Amazon EBS 볼륨입니다.
+ 스페이스를 실행하는 데 사용되는 Amazon EC2 인스턴스입니다.
+ JupyterLab 실행하는 데 사용되는 이미지입니다.

**참고**  
애플리케이션은 다른 애플리케이션의 EBS 볼륨에 액세스할 수 없습니다. 예를 들어 Code Editor는 Code-OSS, Visual Studio Code - Open Source를 기반으로 JupyterLab 의 EBS 볼륨에 액세스할 수 없습니다. EBS 볼륨에 대한 자세한 내용은 [Amazon Elastic Block Store(Amazon EBS)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html)를 참조하세요.

Amazon SageMaker API를 사용하여 다음 작업을 수행할 수 있습니다.
+ 사용자의 EBS 볼륨의 기본 스토리지 크기를 변경합니다.
+ EBS 스토리지의 최대 크기 변경
+ 애플리케이션의 사용자 설정을 지정합니다. 예를 들어 사용자가 사용자 지정 이미지 또는 코드 리포지토리를 사용하는지 여부를 지정할 수 있습니다.
+ 지원 애플리케이션 유형을 지정합니다.

Amazon EBS 볼륨의 기본 크기는 볼륨 크기의 5GB입니다. 볼륨 크기를 최대 16,384GB로 늘릴 수 있습니다. 아무것도 하지 않으면 사용자가 볼륨 크기를 100GB로 늘릴 수 있습니다. 볼륨 크기는 6시간 이내에 한 번만 변경할 수 있습니다.

JupyterLab 애플리케이션과 연결된 커널은 JupyterLab을 실행하는 동일한 Amazon EC2 인스턴스에서 실행됩니다. 공백을 생성하면 SageMaker Distribution 이미지의 최신 버전이 기본적으로 사용됩니다. SageMaker Distribution 이미지에 대한 자세한 내용은 [SageMaker Studio 이미지 지원 정책](sagemaker-distribution.md) 섹션을 참조하세요.

**중요**  
SageMaker AI Distribution 이미지의 최신 버전을 사용하도록 스페이스를 업데이트하는 방법에 대한 자세한 내용은 [SageMaker Distribution 이미지 업데이트](studio-updated-jl-update-distribution-image.md) 섹션을 참조하세요.

스토리지 볼륨 내 사용자의 작업 디렉터리는 `/home/sagemaker-user`입니다. 볼륨을 암호화하기 위해 자체 AWS KMS 키를 지정하면 작업 디렉터리의 모든 항목이 고객 관리형 키를 사용하여 암호화됩니다. AWS KMS 키를 지정하지 않으면 내부의 데이터가 AWS 관리형 키로 암호화`/home/sagemaker-user`됩니다. AWS KMS 키 지정 여부에 관계없이 작업 디렉터리 외부의 모든 데이터는 AWS 관리형 키로 암호화됩니다.

다음 섹션에서는 관리자로서 수행해야 하는 구성을 안내합니다.

**Topics**
+ [사용자에게 공백에 대한 액세스 권한 부여](studio-updated-jl-admin-guide-permissions.md)
+ [JupyterLab 사용자의 기본 스토리지 크기 변경](studio-updated-jl-admin-guide-storage-size.md)
+ [JupyterLab을 사용한 수명 주기 구성](jl-lcc.md)
+ [JupyterLab의 Git 리포지토리](studio-updated-jl-admin-guide-git-attach.md)
+ [사용자 지정 이미지](studio-updated-jl-admin-guide-custom-images.md)
+ [SageMaker Distribution 이미지 업데이트](studio-updated-jl-update-distribution-image.md)
+ [미사용 리소스 삭제](studio-updated-jl-admin-guide-clean-up.md)
+ [할당량](studio-updated-jl-admin-guide-quotas.md)

# 사용자에게 공백에 대한 액세스 권한 부여
<a name="studio-updated-jl-admin-guide-permissions"></a>

사용자에게 프라이빗 또는 공유 스페이스에 대한 액세스 권한을 부여하려면 IAM 역할에 권한 정책을 연결해야 합니다. 권한 정책을 사용하여 프라이빗 스페이스 및 관련 애플리케이션을 특정 사용자 프로필로 제한할 수도 있습니다.

다음 권한 정책은 프라이빗 및 공유 스페이스에 대한 액세스 권한을 부여합니다. 이를 통해 사용자는 자신의 스페이스를 생성하고 도메인 내의 다른 스페이스를 나열할 수 있습니다. 이 정책을 사용하는 사용자는 다른 사용자의 프라이빗 스페이스에 액세스할 수 없습니다. Studio 스페이스에 대한 자세한 내용은 [Amazon SageMaker Studio 스페이스](studio-updated-spaces.md) 섹션을 참조하세요.

정책은 다음에 대한 권한을 제공합니다.
+ 프라이빗 스페이스 또는 공유 스페이스.
+ 이러한 스페이스에 액세스하기 위한 사용자 프로필입니다.

권한을 제공하려면 다음 정책의 권한을 범위 내린 다음 사용자의 IAM 역할에 추가할 수 있습니다. 또한 이 정책을 사용하여 공백과 관련 애플리케이션을 특정 사용자 프로필로 제한할 수 있습니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {

      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateApp",
        "sagemaker:DeleteApp"
      ],
      "Resource": "arn:aws:sagemaker:us-east-2:111122223333:app/*",
      "Condition": {
        "Null": {
          "sagemaker:OwnerUserProfileArn": "true"
        }
      }
    },
    {
      "Sid": "SMStudioCreatePresignedDomainUrlForUserProfile",
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreatePresignedDomainUrl"
      ],
      "Resource": "arn:aws:sagemaker:us-east-2:111122223333:user-profile/sagemaker:DomainId/sagemaker:UserProfileName"
    },
    {
      "Sid": "SMStudioAppPermissionsListAndDescribe",
      "Effect": "Allow",
      "Action": [
        "sagemaker:ListApps",
        "sagemaker:ListDomains",
        "sagemaker:ListUserProfiles",
        "sagemaker:ListSpaces",
        "sagemaker:DescribeApp",
        "sagemaker:DescribeDomain",
        "sagemaker:DescribeUserProfile",
        "sagemaker:DescribeSpace"
      ],
      "Resource": "*"
    },
    {
      "Sid": "SMStudioAppPermissionsTagOnCreate",
      "Effect": "Allow",
      "Action": [
        "sagemaker:AddTags"
      ],
      "Resource": "arn:aws:sagemaker:us-east-2:111122223333:*/*",
      "Condition": {
        "Null": {
          "sagemaker:TaggingAction": "false"
        }
      }
    },
    {
      "Sid": "SMStudioRestrictSharedSpacesWithoutOwners",
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateSpace",
        "sagemaker:UpdateSpace",
        "sagemaker:DeleteSpace"
      ],
      "Resource": "arn:aws:sagemaker:us-east-2:111122223333:space/sagemaker:DomainId/*",
      "Condition": {
        "Null": {
          "sagemaker:OwnerUserProfileArn": "true"
        }
      }
    },
    {
      "Sid": "SMStudioRestrictSpacesToOwnerUserProfile",
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateSpace",
        "sagemaker:UpdateSpace",
        "sagemaker:DeleteSpace"
      ],
      "Resource": "arn:aws:sagemaker:us-east-2:111122223333:space/sagemaker:DomainId/*",
      "Condition": {
        "ArnLike": {
        "sagemaker:OwnerUserProfileArn": "arn:aws:sagemaker:us-east-2:111122223333:user-profile/sagemaker:DomainId/sagemaker:UserProfileName"
        },
        "StringEquals": {
          "sagemaker:SpaceSharingType": [
            "Private",
            "Shared"
          ]
        }
      }
    },
    {
      "Sid": "SMStudioRestrictCreatePrivateSpaceAppsToOwnerUserProfile",
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateApp",
        "sagemaker:DeleteApp"
      ],
      "Resource": "arn:aws:sagemaker:us-east-2:111122223333:app/sagemaker:DomainId/*",
      "Condition": {
        "ArnLike": {
          "sagemaker:OwnerUserProfileArn": "arn:aws:sagemaker:us-east-2:111122223333:user-profile/sagemaker:DomainId/sagemaker:UserProfileName"
        },
        "StringEquals": {
          "sagemaker:SpaceSharingType": [
            "Private"
          ]
        }
      }
    }
  ]
}
```

------

# JupyterLab 사용자의 기본 스토리지 크기 변경
<a name="studio-updated-jl-admin-guide-storage-size"></a>

사용자의 기본 스토리지 설정을 변경할 수 있습니다. 조직의 요구 사항과 사용자의 요구 사항에 따라 기본 스토리지 설정을 변경할 수도 있습니다.

스토리지 크기를 변경하려면 이 섹션에서는 다음을 수행하는 명령을 제공합니다.

1. Amazon SageMaker AI 도메인(도메인)에서 Amazon EBS 스토리지 설정을 업데이트합니다.

1. 사용자 프로필을 생성하고 사용자 프로필 내에서 스토리지 설정을 지정합니다.

다음 AWS Command Line Interface (AWS CLI) 명령을 사용하여 기본 스토리지 크기를 변경합니다.

다음 AWS CLI 명령을 사용하여 도메인을 업데이트합니다.

```
aws --region AWS 리전 sagemaker update-domain \
--domain-id domain-id \
--default-user-settings '{
    "SpaceStorageSettings": {
        "DefaultEbsStorageSettings":{
            "DefaultEbsVolumeSizeInGb":5,
            "MaximumEbsVolumeSizeInGb":100
        }
    }
}'
```

다음 AWS CLI 명령을 사용하여 사용자 프로필을 생성하고 기본 스토리지 설정을 지정합니다.

```
aws --region AWS 리전 sagemaker create-user-profile \
--domain-id domain-id \
--user-profile-name user-profile-name \
--user-settings '{
    "SpaceStorageSettings": {
        "DefaultEbsStorageSettings":{
            "DefaultEbsVolumeSizeInGb":5,
            "MaximumEbsVolumeSizeInGb":100
        }
    }
}'
```

다음 AWS CLI 명령을 사용하여 사용자 프로필의 기본 스토리지 설정을 업데이트합니다.

```
aws --region AWS 리전 sagemaker update-user-profile \
--domain-id domain-id \
--user-profile-name user-profile-name \
--user-settings '{
    "SpaceStorageSettings": {
        "DefaultEbsStorageSettings":{
            "DefaultEbsVolumeSizeInGb":25,
            "MaximumEbsVolumeSizeInGb":200
        }
    }
}'
```

# JupyterLab을 사용한 수명 주기 구성
<a name="jl-lcc"></a>

수명 주기 구성은 새 JupyterLab 노트북 시작과 같은 JupyterLab 수명 주기 이벤트에 의해 트리거되는 쉘 스크립트입니다. 수명 주기 구성을 사용하여 JupyterLab 환경의 사용자 지정을 자동화할 수 있습니다. 사용자 지정에는 사용자 지정 패키지 설치, 노트북 확장 구성, 데이터세트 사전 로드, 소스 코드 리포지토리 설정이 포함됩니다.

수명 주기 구성을 사용하면 특정 요구를 충족하도록 JupyterLab을 구성할 수 있는 유연성과 제어가 가능합니다. 예를 들어 가장 일반적으로 사용되는 패키지 및 라이브러리를 사용하여 최소 기본 컨테이너 이미지 세트를 생성할 수 있습니다. 그런 다음 수명 주기 구성을 사용하여 데이터 과학 및 기계 학습 팀 전체에 걸쳐 특정 사용 사례에 대한 추가 패키지를 설치할 수 있습니다.

**참고**  
각 스크립트의 최대 글자 수는 **16,384자**입니다.

**Topics**
+ [수명 주기 구성 생성](jl-lcc-create.md)
+ [수명 주기 구성 디버깅](jl-lcc-debug.md)
+ [수명 주기 구성 분리](jl-lcc-delete.md)

# 수명 주기 구성 생성
<a name="jl-lcc-create"></a>

이 주제에는 JupyterLab을 사용하여 수명 주기 구성을 생성하고 연결하는 지침이 포함되어 있습니다. AWS Command Line Interface (AWS CLI) 또는 AWS Management Console 를 사용하여 JupyterLab 환경에 대한 사용자 지정을 자동화합니다.

수명 주기 구성은 새 JupyterLab 노트북 시작과 같은 JupyterLab 수명 주기 이벤트에 의해 트리거되는 쉘 스크립트입니다. 수명 주기 구성에 대한 추가 정보는 [JupyterLab을 사용한 수명 주기 구성](jl-lcc.md) 섹션을 참조하세요.

## 수명 주기 구성 생성(AWS CLI)
<a name="jl-lcc-create-cli"></a>

 AWS Command Line Interface (AWS CLI)를 사용하여 Studio 환경에 대한 사용자 지정을 자동화하는 수명 주기 구성을 생성하는 방법을 알아봅니다.

### 사전 조건
<a name="jl-lcc-create-cli-prerequisites"></a>

시작하기 전에 다음 필수 조건을 완료합니다.
+ 현재 버전 설치의 단계에 AWS CLI 따라를 업데이트합니다. [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html#install-tool-bundled) 
+ 로컬 컴퓨터에서 `aws configure`를 실행하고 AWS 보안 인증을 제공하세요. 자격 AWS 증명에 대한 자세한 내용은 [AWS 자격 증명 이해 및 가져오기를 참조하세요](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html).
+ Amazon SageMaker AI 도메인에 온보딩합니다. 개념적 정보는 [Amazon SageMaker AI 도메인 개요](gs-studio-onboard.md) 섹션을 참조하세요. 빠른 시작 안내서는 [Amazon SageMaker AI에 빠른 설정 사용](onboard-quick-start.md) 섹션을 참조하세요.

### 1단계: 수명 주기 구성 생성
<a name="jl-lcc-create-cli-step1"></a>

다음 절차는 `Hello World`를 인쇄하는 수명 주기 구성 스크립트를 생성하는 방법을 보여 줍니다.

**참고**  
각 스크립트는 최대 **16,384자**까지 입력할 수 있습니다.

1. 로컬 시스템엣서 다음 내용으로 `my-script.sh`이라는 파일을 만듭니다.

   ```
   #!/bin/bash
   set -eux
   echo 'Hello World!'
   ```

1. 다음을 사용하여 `my-script.sh` 파일을 base64 형식으로 변환합니다. 이 필수 조건은 간격 및 줄 바꿈 인코딩으로 인해 발생하는 오류를 방지합니다.

   ```
   LCC_CONTENT=`openssl base64 -A -in my-script.sh`
   ```

1. Studio와 함께 사용할 수명 주기 구성을 생성하세요. 다음 명령은 관련 `JupyterLab` 애플리케이션을 시작할 때 실행되는 수명 주기 구성을 생성합니다.

   ```
   aws sagemaker create-studio-lifecycle-config \
   --region region \
   --studio-lifecycle-config-name my-jl-lcc \
   --studio-lifecycle-config-content $LCC_CONTENT \
   --studio-lifecycle-config-app-type JupyterLab
   ```

   반환된 새로 생성된 수명 주기 구성의 ARN을 기록해 둡니다. 이 ARN은 수명 주기 구성을 애플리케이션에 연결하는 데 필요합니다.

### 2단계: Amazon SageMaker AI 도메인(domain) 또는 사용자 프로필에 수명 주기 구성 연결
<a name="jl-lcc-create-cli-step2"></a>

수명 주기 구성을 연결하려면 도메인 또는 사용자 프로필에 `UserSettings`을 업데이트해야 합니다. 도메인 수준에서 연결된 수명 주기 구성 스크립트는 모든 사용자에게 상속됩니다. 하지만 사용자 프로필 수준에서 연결된 스크립트는 특정 사용자로 범위가 지정됩니다 

다음 명령을 사용하여 수명 주기 구성이 연결된 새 사용자 프로필, 도메인 또는 공간을 생성할 수 있습니다.
+ [create-user-profile](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sagemaker/create-user-profile.html)
+ [create-domain](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sagemaker/create-domain.html)
+ [create-space](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sagemaker/create-space.html)

다음 명령은 수명 주기 구성을 사용하여 사용자 프로파일을 생성합니다. 이전 단계의 수명 주기 구성 ARN을 사용자의 `JupyterLabAppSettings`에 추가합니다. 목록을 전달하여 여러 수명 주기 구성을 동시에 추가할 수 있습니다. 사용자가를 사용하여 JupyterLab 애플리케이션을 시작하면 기본 애플리케이션을 사용하는 대신 수명 주기 구성을 지정할 AWS CLI수 있습니다. 사용자가 전달하는 수명 주기 구성은 `JupyterLabAppSettings`의 수명 주기 구성 목록에 속해야 합니다.

```
# Create a new UserProfile
aws sagemaker create-user-profile --domain-id domain-id \
--user-profile-name user-profile-name \
--region region \
--user-settings '{
"JupyterLabAppSettings": {
  "LifecycleConfigArns":
    [lifecycle-configuration-arn-list]
  }
}'
```

## 수명 주기 구성 생성(콘솔)
<a name="jl-lcc-create-console"></a>

를 사용하여 Studio 환경에 대한 사용자 지정을 자동화 AWS Management Console 하는 수명 주기 구성을 생성하는 방법을 알아봅니다.

### 1단계: 수명 주기 구성 생성
<a name="jl-lcc-create-console-step1"></a>

다음 절차를 통해 `Hello World`를 인쇄하는 수명 주기 구성 스크립트를 생성합니다.

**수명 주기 구성을 생성하려면**

1. [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)에서 Amazon SageMaker AI 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **관리자 구성**을 선택합니다.

1. **관리자 구성**에서 **수명 주기 구성**을 선택합니다.

1. **JupyterLab** 탭을 선택합니다.

1. **구성 생성**을 선택합니다.

1. **이름**에는 수명 주기 구성의 이름을 지정합니다.

1. **스크립트**의 텍스트 상자에 다음 수명 주기 구성을 지정합니다.

   ```
   #!/bin/bash
   set -eux
   echo 'Hello World!'
   ```

1. **구성 생성**을 선택합니다.

### 2단계: Amazon SageMaker AI 도메인(domain) 또는 사용자 프로필에 수명 주기 구성 연결
<a name="jl-lcc-create-console-step2"></a>

도메인 수준에서 연결된 수명 주기 구성 스크립트는 모든 사용자에게 상속됩니다. 하지만 사용자 프로필 수준에서 연결된 스크립트는 특정 사용자로 범위가 지정됩니다

JupyterServer에 대해 도메인 또는 사용자 프로필에 여러 수명 주기 구성을 연결할 수 있습니다.

다음 절차를 통해 도메인에 수명 주기 구성을 연결합니다.

**도메인에 수명 주기 구성을 연결하려면**

1. [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)에서 Amazon SageMaker AI 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **관리자 구성**을 선택합니다.

1. **관리자 구성**에서 **도메인**을 선택합니다.

1. 도메인 목록에서 수명 주기 구성을 연결할 도메인을 선택합니다.

1. **도메인 세부 정보**에서 **환경** 탭을 선택합니다.

1. **개인용 Studio 앱의 수명 주기 구성**에서 **연결**을 선택합니다.

1. **소스**에서 **기존 구성**을 선택합니다.

1. **Studio 수명 주기 구성**에서 이전 단계에서 만든 수명 주기 구성을 선택합니다.

1. **도메인에 연결**을 선택합니다.

다음 절차에 따라 수명 주기 구성을 사용자 프로필에 연결합니다.

**사용자 프로필에 수명 주기 구성을 연결하려면**

1. [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)에서 Amazon SageMaker AI 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **관리자 구성**을 선택합니다.

1. **관리자 구성**에서 **도메인**을 선택합니다.

1. 도메인 목록에서 수명 주기 구성을 연결할 사용자 프로필이 포함된 도메인을 선택합니다.

1. **사용자 프로필**에서 사용자 프로필을 선택합니다.

1. **사용자 세부 정보** 탭에서 **편집**을 선택합니다.

1. 왼쪽 탐색 창에서 **Studio 설정**을 선택합니다.

1. **사용자에게 연결된 수명 주기 구성**에서 **연결**을 선택합니다.

1. **소스**에서 **기존 구성**을 선택합니다.

1. **Studio 수명 주기 구성**에서 이전 단계에서 만든 수명 주기 구성을 선택합니다.

1. **사용자 프로필에 연결**을 선택합니다.

# 수명 주기 구성 디버깅
<a name="jl-lcc-debug"></a>

다음 주제에서는 수명 주기 구성에 대한 정보를 얻고 디버깅하는 방법을 보여줍니다.

**Topics**
+ [CloudWatch Logs에서 수명 주기 구성 프로세스 확인](#jl-lcc-debug-logs)
+ [수명 주기 구성의 제한 시간](#jl-lcc-debug-timeout)

## CloudWatch Logs에서 수명 주기 구성 프로세스 확인
<a name="jl-lcc-debug-logs"></a>

수명 주기 구성은 `STDOUT`및 `STDERR`만 기록합니다.

`STDOUT`는 bash 스크립트의 기본 출력입니다. bash 명령어 끝에 `>&2`를 추가하여 `STDERR`에 쓸 수 있습니다. 예를 들어 `echo 'hello'>&2`입니다.

수명 주기 구성에 대한 로그는 Amazon CloudWatch를 AWS 계정 사용하여에 게시됩니다. 이러한 로그는 CloudWatch 콘솔의 `/aws/sagemaker/studio`로그 스트림에서 찾을 수 있습니다.

1. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **로그**를 선택합니다. 드롭다운 메뉴에서 **로그 그룹**을 선택합니다.

1. **로그 그룹** 페이지에서 `aws/sagemaker/studio`를 검색합니다.

1. 로그 그룹을 선택합니다.

1. **로그 그룹 세부 정보** 페이지에서 **로그 스트림** 탭을 선택합니다.

1. 특정 스페이스의 로그를 찾으려면 다음 형식을 사용하여 로그 스트림을 검색하세요.

   ```
   domain-id/space-name/app-type/default/LifecycleConfigOnStart
   ```

   예를 들어 도메인 ID `d-m85lcu8vbqmz`, 스페이스 이름 `i-sonic-js`, 애플리케이션 유형 `JupyterLab`에 대한 수명 주기 구성 로그를 찾으려면 다음 검색 문자열을 사용하세요.

   ```
   d-m85lcu8vbqmz/i-sonic-js/JupyterLab/default/LifecycleConfigOnStart
   ```

## 수명 주기 구성의 제한 시간
<a name="jl-lcc-debug-timeout"></a>

수명 주기 구성 시간 초과 제한은 5분입니다. 수명 주기 구성 스크립트를 실행하는 데 5분 이상 걸리는 경우 오류가 발생합니다.

이 오류를 해결하려면 수명 주기 구성 스크립트가 5분 이내에 완료되어야 합니다.

스크립트 런타임을 줄이기 위해 다음을 시도할 수 있습니다.
+ 불필요한 단계를 줄입니다. 예를 들어 대규모 패키지를 설치할 conda 환경을 제한합니다.
+ 작업을 병렬 프로세스로 실행합니다.
+ 스크립트의 nohup 명령을 사용하여 중단 신호는 무시하여 스크립트가 중지 없이 실행되도록 합니다.

# 수명 주기 구성 분리
<a name="jl-lcc-delete"></a>

스크립트를 업데이트하려면 새 수명 주기 구성 스크립트를 생성하여 해당 Amazon SageMaker AI 도메인(도메인), 사용자 프로필 또는 공유 스페이스에 연결해야 합니다. 수명 주기 구성 스크립트는 생성되고 나면 변경할 수 없습니다. 수명 주기 구성 생성 및 연결에 대한 자세한 내용은 [수명 주기 구성 생성](jl-lcc-create.md)를 참조하세요.

다음 섹션에서는 AWS Command Line Interface (AWS CLI)를 사용하여 수명 주기 구성을 분리하는 방법을 보여줍니다.

## 를 사용하여 분리 AWS CLI
<a name="jl-lcc-delete-cli"></a>

(AWS CLI)를 사용하여 수명 주기 구성을 분리하려면 리소스에 연결된 수명 주기 구성 목록에서 원하는 수명 주기 구성을 제거합니다. 그런 다음 목록을 해당 명령의 일부로 전달합니다.
+ [update-user-profile](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sagemaker/update-user-profile.html)
+ [update-domain](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sagemaker/update-domain.html)
+ [update-space](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sagemaker/update-space.html)

예를 들어 다음 명령은 해당 도메인에 연결된 JupyterLab 애플리케이션의 모든 수명 주기 구성을 제거합니다.

```
aws sagemaker update-domain --domain-id domain-id \
--region region \
--default-user-settings '{
"JupyterLabAppSettings": {
  "LifecycleConfigArns":
    []
  }
}'
```

# JupyterLab의 Git 리포지토리
<a name="studio-updated-jl-admin-guide-git-attach"></a>

JupyterLab은 Git 리포지토리(repo)의 URL을 입력하고, 환경에 복제하고, 변경 사항을 푸시하고, 커밋 이력을 볼 수 있는 Git 확장입니다. 또한 Amazon SageMaker AI 도메인(도메인) 또는 사용자 프로필에 제안된 Git 리포지토리 URL을 연결할 수도 있습니다.

다음 섹션에서는 Git 리포지토리 URLs 연결하거나 분리하는 방법을 보여줍니다.

**Topics**
+ [Git 리포지토리 연결(AWS CLI)](studio-updated-git-attach-cli.md)
+ [Git 리포 URL 분리](studio-updated-git-detach.md)

# Git 리포지토리 연결(AWS CLI)
<a name="studio-updated-git-attach-cli"></a>

이 섹션에서는를 사용하여 Git 리포지토리(리포지토리) URL을 연결하는 방법을 보여줍니다 AWS CLI. Git 리포지토리 URL을 연결한 후 [Amazon SageMaker Studio에서 Git 리포지토리 복제](#studio-updated-tasks-git)의 단계에 따라 복제할 수 있습니다.

## 사전 조건
<a name="studio-updated-git-attach-cli-prerequisites"></a>

시작하기 전에 다음 필수 조건을 완료합니다.
+ 현재 버전 설치의 단계에 AWS CLI 따라를 업데이트합니다. [AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html#install-tool-bundled) 
+ 로컬 컴퓨터에서 `aws configure`를 실행하고 AWS 보안 인증을 제공하세요. 자격 AWS 증명에 대한 자세한 내용은 [AWS 자격 증명 이해 및 가져오기를 참조하세요](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html).
+ Amazon SageMaker AI 도메인에 온보딩합니다. 자세한 내용은 [Amazon SageMaker AI 도메인 개요](gs-studio-onboard.md) 단원을 참조하십시오.

## Amazon SageMaker AI 도메인(도메인) 또는 사용자 프로필에 Git 리포지토리 연결
<a name="studio-updated-git-attach-cli-attach"></a>

도메인 수준에서 연결된 Git 리포지토리 URL은 모든 사용자에게 상속됩니다. 하지만 사용자 프로필 수준에서 연결된 Git 리포지토리 URL은 특정 사용자로 범위가 지정됩니다. 사용자는 리포지토리 URL 목록을 전달하여 여러 Git 리포지토리 URL을 Amazon SageMaker AI 도메인 또는 사용자 프로필에 연결할 수 있습니다.

다음 섹션에서는 Git 리포지토리 URL을 도메인 및 사용자 프로필에 연결하는 방법을 보여줍니다.

### Amazon SageMaker AI 도메인에 연결
<a name="studio-updated-git-attach-cli-attach-domain"></a>

다음 명령은 Git 리포지토리 URL을 기존 도메인에 연결합니다.

```
aws sagemaker update-domain --region region --domain-id domain-id \
    --default-user-settings JupyterLabAppSettings={CodeRepositories=[{RepositoryUrl="repository"}]}
```

### 사용자 프로필에 연결
<a name="studio-updated-git-attach-cli-attach-userprofile"></a>

다음 명령은 Git 리포지토리 URL을 기존 사용자 프로필에 연결합니다.

```
aws sagemaker update-user-profile --domain-id domain-id --user-profile-name user-name\
    --user-settings JupyterLabAppSettings={CodeRepositories=[{RepositoryUrl="repository"}]}
```

## Amazon SageMaker Studio에서 Git 리포지토리 복제
<a name="studio-updated-tasks-git"></a>

Amazon SageMaker Studio는 로컬 Git 리포지토리에만 연결할 수 있습니다. 리포지토리의 파일에 액세스하려면 먼저 Studio 내에서 Git 리포지토리를 복제해야 합니다. 이를 위해서는 Studio는 Git 리포지토리의 URL을 입력하고, 환경에 복제하고, 변경 사항을 푸시하고, 커밋 기록을 볼 수 있는 Git 확장을 제공합니다.

리포지토리가 비공개이고 액세스를 위해 자격 증명이 필요한 경우 사용자 자격 증명을 입력하라는 메시지가 표시됩니다. 자격 증명에는 사용자 이름과 개인 액세스 토큰이 포함됩니다. 개인 액세스 토큰에 대한 자세한 내용은 [개인 액세스 토큰 관리](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)를 참조하세요.

관리자는 Amazon SageMaker AI 도메인 또는 사용자 프로필 수준에서 제안된 Git 리포지토리 URL을 연결할 수도 있습니다. 그러면 사용자는 제안 목록에서 리포지토리 URL을 선택하고 이를 Studio로 복제할 수 있습니다. 권장되는 리포지토리를 연결하는 방법에 대한 자세한 내용은 [제안된 Git 리포지토리를 Amazon SageMaker Studio Classic에 연결](studio-git-attach.md)을 참조하세요.

# Git 리포 URL 분리
<a name="studio-updated-git-detach"></a>

이 섹션에서는 Amazon SageMaker AI 도메인(도메인) 또는 사용자 프로필에서 Git 리포지토리 URL을 분리하는 방법을 보여줍니다. AWS Command Line Interface (AWS CLI) 또는 Amazon SageMaker AI 콘솔을 사용하여 리포URLs을 분리할 수 있습니다.

## 를 사용하여 Git 리포지토리 분리 AWS CLI
<a name="studio-updated-git-detach-cli"></a>

도메인 또는 사용자 프로필에서 모든 Git 리포지토리 URL을 분리하려면 먼저 빈 코드 리포지토리 목록을 전달해야 합니다. 이 목록은 `update-domain`또는 `update-user-profile`명령에서 `JupyterLabAppSettings`파라미터의 일부로 전달됩니다. Git 리포지토리 URL을 하나만 분리하려면 원하는 Git 리포지토리 URL 없이 코드 리포지토리 목록을 전달합니다.

### Amazon SageMaker AI 도메인에서 분리
<a name="studio-updated-git-detach-cli-domain"></a>

다음 명령은 도메인에서 모든 Git 리포지토리 URL을 분리합니다.

```
aws sagemaker update-domain --region region --domain-name domain-name \
    --domain-settings JupyterLabAppSettings={CodeRepositories=[]}
```

### 사용자 프로필에서 분리
<a name="studio-updated-git-detach-cli-userprofile"></a>

다음 명령은 사용자 프로필에서 모든 Git 리포지토리 URL을 분리합니다.

```
aws sagemaker update-user-profile --domain-name domain-name --user-profile-name user-name\
    --user-settings JupyterLabAppSettings={CodeRepositories=[]}
```

# 사용자 지정 이미지
<a name="studio-updated-jl-admin-guide-custom-images"></a>

SageMaker Distribution에서 제공하는 것과 다른 기능이 필요한 경우 사용자 지정 확장 및 패키지와 함께 자체 이미지를 가져올 수 있습니다. 또한 이를 사용하여 자신의 브랜딩 또는 규정 준수 요구 사항에 맞게 JupyterLab UI를 개인화할 수 있습니다.

다음 페이지에서는 사용자 지정 SageMaker AI 이미지를 생성하기 위한 JupyterLab 관련 정보와 템플릿을 제공합니다. 이는 자체 SageMaker AI 이미지를 생성하고 자체 이미지를 Studio에 가져오는 방법에 대한 Amazon SageMaker Studio 정보와 지침을 보완하기 위한 것입니다. 사용자 지정 Amazon SageMaker AI 이미지와 Studio로 자체 이미지를 가져오는 방법에 대한 자세한 내용은 [기존 보유 이미지 사용(BYOI)](studio-updated-byoi.md) 섹션을 참조하세요.

**Topics**
+ [애플리케이션의 상태 확인 및 URL](#studio-updated-jl-admin-guide-custom-images-app-healthcheck)
+ [Dockerfile 예시](#studio-updated-jl-custom-images-dockerfile-templates)

## 애플리케이션의 상태 확인 및 URL
<a name="studio-updated-jl-admin-guide-custom-images-app-healthcheck"></a>
+ `Base URL` – BYOI 애플리케이션의 기본 URL은 `jupyterlab/default`여야 합니다. 애플리케이션은 하나만 가질 수 있으며 항상 이름이 `default`여야 합니다.
+ `HealthCheck API` – SageMaker AI는 포트 `8888`에서 상태 확인 엔드포인트를 사용하여 JupyterLab 애플리케이션의 상태를 확인합니다. `jupyterlab/default/api/status`는 상태 확인을 위한 엔드포인트입니다.
+ `Home/Default URL` -에서 사용하는 `/opt/.sagemakerinternal` 및 `/opt/ml` 디렉터리입니다 AWS. `/opt/ml`의 메타데이터 파일에는 `DomainId` 같은 리소스에 대한 메타데이터가 포함되어 있습니다.
+ 인증 - 사용자의 인증을 활성화하려면 Jupyter 노트북 토큰 또는 암호 기반 인증을 끄고 모든 오리진을 허용합니다.

## Dockerfile 예시
<a name="studio-updated-jl-custom-images-dockerfile-templates"></a>

다음 예시는 위 정보와 [사용자 지정 이미지 사양](studio-updated-byoi-specs.md)을 충족하는 `Dockerfile`입니다.

**참고**  
자체 이미지를 SageMaker Unified Studio에 가져오는 경우 *Amazon SageMaker Unified Studio 사용 설명서*의 [Dockerfile specifications](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/byoi-specifications.html)을 따라야 합니다.  
SageMaker Unified Studio의 `Dockerfile` 예시는 *Amazon SageMaker Unified Studio 사용 설명서*의 [Dockerfile example](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/byoi-specifications.html#byoi-specifications-example)에서 확인할 수 있습니다.

------
#### [ Example AL2023 Dockerfile ]

다음은 위 정보와 [사용자 지정 이미지 사양](studio-updated-byoi-specs.md)을 충족하는 예시 AL2023 Dockerfile입니다.

```
FROM public.ecr.aws/amazonlinux/amazonlinux:2023

ARG NB_USER="sagemaker-user"
ARG NB_UID=1000
ARG NB_GID=100

# Install Python3, pip, and other dependencies
RUN yum install -y \
    python3 \
    python3-pip \
    python3-devel \
    gcc \
    shadow-utils && \
    useradd --create-home --shell /bin/bash --gid "${NB_GID}" --uid ${NB_UID} ${NB_USER} && \
    yum clean all

RUN python3 -m pip install --no-cache-dir \
    'jupyterlab>=4.0.0,<5.0.0' \
    urllib3 \
    jupyter-activity-monitor-extension \
    --ignore-installed

# Verify versions
RUN python3 --version && \
    jupyter lab --version

USER ${NB_UID}
CMD jupyter lab --ip 0.0.0.0 --port 8888 \
    --ServerApp.base_url="/jupyterlab/default" \
    --ServerApp.token='' \
    --ServerApp.allow_origin='*'
```

------
#### [ Example Amazon SageMaker Distribution Dockerfile ]

다음은 위 정보와 [사용자 지정 이미지 사양](studio-updated-byoi-specs.md)을 충족하는 예시 Amazon SageMaker Distribution Dockerfile입니다.

```
FROM public.ecr.aws/sagemaker/sagemaker-distribution:latest-cpu
ARG NB_USER="sagemaker-user"
ARG NB_UID=1000
ARG NB_GID=100

ENV MAMBA_USER=$NB_USER

USER root

RUN apt-get update
RUN micromamba install sagemaker-inference --freeze-installed --yes --channel conda-forge --name base

USER $MAMBA_USER

ENTRYPOINT ["entrypoint-jupyter-server"]
```

------

# SageMaker Distribution 이미지 업데이트
<a name="studio-updated-jl-update-distribution-image"></a>

**중요**  
이 주제에서는 공백을 생성하고 사용자에게 이에 대한 액세스 권한을 부여했다고 가정합니다. 자세한 내용은 [사용자에게 공백에 대한 액세스 권한 부여](studio-updated-jl-admin-guide-permissions.md) 섹션을 참조하세요.

SageMaker Distribution 이미지의 최신 버전을 사용하여 최신 기능에 액세스하도록 이미 생성한 JupyterLab 스페이스를 업데이트합니다. Studio UI 또는 AWS Command Line Interface (AWS CLI)를 사용하여 이미지를 업데이트할 수 있습니다.

다음 섹션에는 이미지 업데이트에 대한 정보를 제공합니다.

## 이미지 업데이트(UI)
<a name="studio-updated-jl-update-distribution-image-ui"></a>

이미지를 업데이트하려면 사용자의 JupyterLab 스페이스를 다시 시작해야 합니다. 다음 절차에 따라 사용자의 JupyterLab 스페이스를 최신 이미지로 업데이트합니다.

**이미지 업데이트(UI)**

1. Studio를 엽니다. Studio 열기에 대한 자세한 내용은 [Amazon SageMaker Studio 출시](studio-updated-launch.md) 섹션을 참조하세요.

1. **JupyterLab**을 선택합니다.

1. 사용자의 JupyterLab 스페이스를 선택합니다.

1. **스페이스 중지**를 선택합니다.

1. **이미지**에서 SageMaker AI Distribution 이미지의 업데이트된 버전을 선택합니다. 최신 이미지를 보려면 **최신**을 선택합니다.

1. **스페이스 실행**을 선택합니다.

## 이미지 업데이트(AWS CLI)
<a name="studio-updated-jl-update-distribution-image-cli"></a>

이 단원에서는 AWS Command Line Interface (AWS CLI)가 설치되어 있다고 가정합니다. 설치에 대한 자세한 내용은의 최신 버전 설치 또는 업데이트를 AWS CLI참조하세요. [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) 

이미지를 업데이트하려면 사용자 스페이스에 대해 다음을 수행해야 합니다.

1. JupyterLab 애플리케이션 삭제

1. 공백 업데이트

1. 애플리케이션 생성

**중요**  
이미지 업데이트를 시작하기 전에 다음 정보를 준비해야 합니다.  
도메인 ID - 사용자의 Amazon SageMaker AI 도메인의 ID입니다.
애플리케이션 유형 - JupyterLab.
애플리케이션 이름 - 기본값.
공백 이름 - 공백에 지정된 이름.
인스턴스 유형 - 애플리케이션을 실행하기 위해 사용하는 Amazon EC2 인스턴스 유형. 예를 들어 `ml.t3.medium`입니다.
SageMaker 이미지 ARN - SageMaker AI Distribution 이미지의 Amazon 리소스 이름(ARN)입니다. `sagemaker-distribution-cpu` 또는 `sagemaker-distribution-gpu`를 리소스 식별자로 지정하여 SageMaker AI Distribution 이미지의 최신 버전을 제공할 수 있습니다.

JupyterLab 애플리케이션을 삭제하려면 다음 명령을 실행합니다.

```
aws sagemaker delete-app \
--domain-id your-user's-domain-id 
--app-type JupyterLab \
--app-name default \
--space-name name-of-your-user's-space
```

사용자 스페이스를 업데이트하려면 다음 명령을 실행합니다.

```
aws sagemaker update-space \
--space-name name-of-your-user's-space \
--domain-id your-user's-domain-id
```

스페이스를 성공적으로 업데이트한 경우 응답에 공백 ARN이 표시됩니다.

```
{
"SpaceArn": "arn:aws:sagemaker:AWS 리전:111122223333:space/your-user's-domain-id/name-of-your-user's-space"
}
```

애플리케이션을 생성하려면 다음 명령을 사용합니다.

```
aws sagemaker create-app \
--domain-id your-user's-domain-id  \
--app-type JupyterLab \
--app-name default \
--space-name name-of-your-user's-space \
--resource-spec "InstanceType=instance-type,SageMakerImageArn=arn:aws:sagemaker:AWS 리전:555555555555:image/sagemaker-distribution-resource-identifier"
```

# 미사용 리소스 삭제
<a name="studio-updated-jl-admin-guide-clean-up"></a>

JupyterLab 실행 시 추가 비용이 발생하지 않도록 다음 순서로 미사용 리소스를 삭제하는 것이 좋습니다.

1. JupyterLab 애플리케이션

1. 공백

1. 사용자 프로필

1. domains

다음 AWS Command Line Interface (AWS CLI) 명령을 사용하여 도메인 내의 리소스를 삭제합니다.

------
#### [ Delete a JupyterLab application ]

```
aws --region AWS 리전 sagemaker delete-app --domain-id example-domain-id --app-name default --app-type JupyterLab --space-name example-space-name
```

------
#### [ Delete a space ]

**중요**  
공백을 삭제하면 해당 공백과 연결된 Amazon EBS 볼륨이 삭제됩니다. 스페이스를 삭제하기 전에 중요한 데이터를 백업하는 것이 좋습니다.

```
aws --region AWS 리전 sagemaker delete-space --domain-id example-domain-id  --space-name example-space-name
```

------
#### [ Delete a user profile ]

```
aws --region AWS 리전 sagemaker delete-user-profile --domain-id example-domain-id --user-profile example-user-profile
```

------

# 할당량
<a name="studio-updated-jl-admin-guide-quotas"></a>

JupyterLab 에는 다음에 대한 할당량이 있습니다.
+  AWS 계정내의 모든 Amazon EBS 볼륨의 합계입니다.
+ 사용자가 사용할 수 있는 인스턴스 유형입니다.
+ 사용자가 시작할 수 있는 특정 의 인스턴스 수입니다.

사용자를 위한 더 많은 스토리지와 컴퓨팅을 얻으려면 AWS 할당량 증가를 요청하세요. 할당량 증가 요청에 대한 자세한 내용은 [Amazon SageMaker 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html)을 참조하세요.