

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

# RStudio on SageMaker AI를 사용한 사용자 지정 이미지
<a name="rstudio-byoi"></a>

SageMaker 이미지는 RStudio on Amazon SageMaker AI를 실행하는 데 필요한 언어 패키지 및 기타 종속성을 식별하는 파일입니다. SageMaker AI는 이러한 이미지를 사용하여 RStudio를 실행하는 환경을 만듭니다. Amazon SageMaker AI는 사용자가 사용할 수 있는 기본 제공 RStudio 이미지를 제공합니다. 다른 기능이 필요한 경우 나만의 사용자 지정 이미지를 가져올 수 있습니다. 이 페이지에서는 RStudio on SageMaker AI와 함께 사용자 지정 이미지를 사용하기 위한 주요 개념에 대한 정보를 제공합니다. RStudio on SageMaker AI에서 사용할 자체 이미지를 가져오는 프로세스는 다음 세 단계를 거칩니다.

1. Dockerfile에서 사용자 지정 이미지를 만들고 Amazon Elastic Container Registry(Amazon ECR)의 리포지토리로 푸시합니다.

1. Amazon ECR에서 컨테이너 이미지를 가리키는 SageMaker 이미지를 생성하여 Amazon SageMaker AI 도메인에 연결합니다.

1. 사용자 지정 이미지를 사용하여 RStudio에서 새 세션을 시작합니다.

사용자는 SageMaker AI 제어판, [AWS SDK for Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html) 및 [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/)를 사용하여 이미지 및 이미지 버전을 생성하고 이미지 버전을 도메인에 연결할 수 있습니다. 도메인에 온보딩하지 않았더라도 SageMaker AI 콘솔을 사용하여 이미지 및 이미지 버전을 생성할 수도 있습니다.

다음 주제에서는 사용자 지정 이미지를 만들고, 연결하고, 실행하여 RStudio on SageMaker AI로 자체 이미지를 가져오는 방법을 보여줍니다.

## 핵심 용어
<a name="rstudio-byoi-basics"></a>

다음 섹션에서는 RStudio on SageMaker AI에서 사용할 자체 이미지를 가져오기 위한 주요 용어를 정의합니다.
+ **Dockerfile:** Dockerfile은 도커 이미지의 언어 패키지 및 기타 종속성을 식별하는 파일입니다.
+ **도커 이미지**: 도커 이미지는 빌드된 Dockerfile입니다. 이 이미지는 Amazon ECR에 체크인되며 SageMaker AI 이미지의 기본 역할을 합니다.
+ **SageMaker 이미지:** SageMaker 이미지는 Docker 이미지를 기반으로 하는 SageMaker 이미지 버전 세트를 위한 홀더입니다.
+ **이미지 버전:** SageMaker 이미지의 이미지 버전은 RStudio와 호환되고 Amazon ECR 리포지토리에 저장된 Docker 이미지를 나타냅니다. 각 이미지 버전은 변경할 수 없습니다. 이러한 이미지 버전을 도메인에 연결하여 RStudio on SageMaker AI에서 사용할 수 있습니다.

# 사전 조건 완료
<a name="rstudio-byoi-prerequisites"></a>

먼저 RStudio on Amazon SageMaker AI에서 사용할 자체 이미지를 가져오기 전에 다음 사전 조건을 완료해야 합니다.
+ 2022년 4월 7일 이전에 생성된 RStudio를 사용하는 기존 도메인이 있는 경우 먼저 RStudioServerPro 애플리케이션을 삭제하고 다시 생성해야 합니다. 애플리케이션을 삭제하는 방법에 대한 자세한 정보는 [Amazon SageMaker Studio Classic 종료 및 업데이트](studio-tasks-update-studio.md)을 참고하세요.
+ Docker 애플리케이션을 설치합니다. Docker 설정에 대한 자세한 내용은 [방향 및 설정](https://docs.docker.com/get-started/)을 참고하세요.
+ SageMaker AI와 함께 작동하는 RStudio 호환 Dockerfile의 로컬 사본을 생성합니다. 샘플 RStudio dockerfile을 생성하는 방법에 대한 자세한 내용은 [Use a custom image to bring your own development environment to RStudio on Amazon SageMaker AI](https://aws.amazon.com/blogs/machine-learning/use-a-custom-image-to-bring-your-own-development-environment-to-rstudio-on-amazon-sagemaker/)를 참고하세요.
+ [AmazonSageMakerFullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess) 정책이 연결된 AWS Identity and Access Management 실행 역할을 사용합니다. 도메인에 온보딩한 경우 사용자는 SageMaker AI 제어판의 **도메인 요약** 섹션에서 역할을 가져올 수 있습니다.

  Amazon Elastic Container Registry(Amazon ECR) 서비스에 액세스할 수 있는 다음 권한을 실행 역할에 추가합니다.

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

****  

  ```
  { 
      "Version":"2012-10-17",		 	 	  
      "Statement":[ 
          {
              "Sid": "VisualEditor0",
              "Effect":"Allow", 
              "Action":[ 
                  "ecr:CreateRepository", 
                  "ecr:BatchGetImage", 
                  "ecr:CompleteLayerUpload", 
                  "ecr:DescribeImages", 
                  "ecr:DescribeRepositories", 
                  "ecr:UploadLayerPart", 
                  "ecr:ListImages", 
                  "ecr:InitiateLayerUpload", 
                  "ecr:BatchCheckLayerAvailability", 
                  "ecr:PutImage" 
              ], 
              "Resource": "*" 
          }
      ]
  }
  ```

------
+ 다음(또는 그 이상) 버전으로 AWS CLI 를 설치하고 구성합니다. 설치에 대한 자세한 내용은 최신 버전의 설치를 AWS CLI참조하세요. [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) 

  ```
  AWS CLI v1 >= 1.23.6
  AWS CLI v2 >= 2.6.2
  ```

# 사용자 지정 RStudio 이미지 사양
<a name="rstudio-byoi-specs"></a>

이 설명서에서는 사용자 고유 이미지를 가져올 때 사용할 사용자 지정 RStudio 이미지 사양에 대해 알려드립니다. Amazon SageMaker AI에서 사용자 지정 RStudio 이미지를 사용하려면 먼저 두 가지 요구 사항을 충족해야 합니다. 이러한 요구 사항은 RStudio PBC와 Amazon SageMaker Studio Classic 플랫폼에서 부과합니다. 이러한 요구 사항 중 하나라도 충족되지 않으면 사용자 지정 이미지가 제대로 작동하지 않습니다.

## RStudio PBC 요구 사항
<a name="rstudio-byoi-specs-rstudio"></a>

RStudio PBC 요구 사항은 [RStudio Workbench / RStudio Server Pro, Launcher, Kubernetes에서 도커 이미지 사용하기](https://support.rstudio.com/hc/en-us/articles/360019253393-Using-Docker-images-with-RStudio-Server-Pro-Launcher-and-Kubernetes) 문서에 나와 있습니다. 이 문서의 지침에 따라 사용자 지정 RStudio 이미지의 기반을 만드세요.

사용자 지정 이미지에 여러 R 버전을 설치하는 방법에 대한 지침은 [Linux에 여러 버전의 R 설치하기](https://support.rstudio.com/hc/en-us/articles/215488098)를 참고하세요.

## Amazon SageMaker Studio Classic 요구 사항
<a name="rstudio-byoi-specs-studio"></a>

Amazon SageMaker Studio Classic을 사용하려면 RStudio 이미지에 대해 다음과 같은 설치 요구 사항을 충족해야 합니다.
+ 먼저 최소한 `2025.05.1+513.pro3`의 RStudio 기본 이미지를 사용해야 합니다. 자세한 내용은 [RStudio 버전 관리](rstudio-version.md) 섹션을 참조하세요.
+ 먼저 다음과 같은 패키지를 설치해야 합니다.

  ```
  yum install -y sudo \
  openjdk-11-jdk \
  libpng-dev \
  && yum clean all \
  && /opt/R/${R_VERSION}/bin/R -e "install.packages('reticulate', repos='https://packagemanager.rstudio.com/cran/__linux__/centos7/latest')" \
  && /opt/python/${PYTHON_VERSION}/bin/pip install --upgrade \
      'boto3>1.0<2.0' \
      'awscli>1.0<2.0' \
      'sagemaker[local]<3'
  ```
+ 먼저 `RSTUDIO_CONNECT_URL` 및 `RSTUDIO_PACKAGE_MANAGER_URL` 환경 값의 기본값을 제공해야 합니다.

  ```
  ENV RSTUDIO_CONNECT_URL "YOUR_CONNECT_URL"
  ENV RSTUDIO_PACKAGE_MANAGER_URL "YOUR_PACKAGE_MANAGER_URL"
  ENV RSTUDIO_FORCE_NON_ZERO_EXIT_CODE 1
  ```

RStudio 이미지 버전으로 표시되는 이미지에는 다음과 같은 일반 사양이 적용됩니다.

**이미지 실행**  
이미지가 RSession 애플리케이션으로 실행되도록 `ENTRYPOINT` 및 `CMD` 지침이 오버라이딩됩니다.

**이미지 중지**  
`DeleteApp` API는 `docker stop`명령에 해당하는 것을 발행합니다. 컨테이너의 다른 프로세스는 SIGKILL/SIGTERM 신호를 받지 못합니다.

**파일 시스템**  
`/opt/.sagemakerinternal` 및 `/opt/ml`디렉터리는 예약되어 있습니다. 이러한 디렉터리의 모든 데이터는 런타임에 표시되지 않을 수 있습니다.

**사용자 데이터**  
SageMaker AI 도메인의 각 사용자는 이미지의 공유 Amazon Elastic File System 볼륨에 있는 사용자 디렉터리를 받습니다. Amazon Elastic File System 볼륨의 현재 사용자 디렉터리 위치는 `/home/sagemaker-user`입니다.

**메타데이터**  
메타데이터 파일은 `/opt/ml/metadata/resource-metadata.json`에 있습니다. 이미지에 정의된 변수에는 추가 환경 변수가 추가되지 않습니다. 자세한 내용은 [앱 메타데이터 가져오기](notebooks-run-and-manage-metadata.md#notebooks-run-and-manage-metadata-app) 섹션을 참조하세요.

**GPU**  
GPU 인스턴스에서는 이미지가 `--gpus` 옵션과 함께 실행됩니다. 이미지에는 CUDA 툴킷만 포함되어야 하며 NVIDIA 드라이버는 포함해서는 안 됩니다. 자세한 내용은 [NVIDIA 사용 설명서](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/user-guide.html)를 참고하세요.

**지표 및 로깅**  
RSession 프로세스의 로그는 고객 계정의 Amazon CloudWatch로 전송됩니다. 로그 그룹의 이름은 `/aws/sagemaker/studio`입니다. 로그 스트림의 이름은 `$domainID/$userProfileName/RSession/$appName`입니다.

**이미지 크기**  
이미지 크기는 25GB로 제한됩니다. 이미지 크기를 보려면 `docker image ls`를 실행하세요.

# 사용자 지정 RStudio 이미지 만들기
<a name="rstudio-byoi-create"></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)에는 해당 리소스를 만드는 동안 태그를 추가할 수 있는 권한이 이미 포함되어 있습니다.

이 주제에서는 사용자가 SageMaker AI 콘솔 및 AWS CLI를 사용하여 사용자 지정 RStudio 이미지를 생성할 수 있는 방법을 설명합니다. 를 사용하는 경우 로컬 시스템에서 단계를 실행 AWS CLI해야 합니다. Amazon SageMaker Studio Classic에서는 다음 단계를 수행할 수 없습니다.

이미지를 생성할 때 SageMaker AI는 초기 이미지 버전도 생성합니다. 이 이미지 버전은 [Amazon Elastic Container Registry(ECR)](https://console.aws.amazon.com/ecr/)에 있는 컨테이너 이미지를 나타냅니다. 컨테이너 이미지는 RStudio에서 사용하기 위한 요구 사항을 충족해야 합니다. 자세한 내용은 [사용자 지정 RStudio 이미지 사양](rstudio-byoi-specs.md) 섹션을 참조하세요.

이미지를 로컬에서 테스트하고 일반적인 문제를 해결하는 방법에 대한 정보는 [SageMaker Studio 사용자 지정 이미지 샘플 리포지토리](https://github.com/aws-samples/sagemaker-studio-custom-image-samples/blob/main/DEVELOPMENT.md)를 참고하세요.

**Topics**
+ [SageMaker AI 호환 RStudio Docker 컨테이너 이미지를 Amazon ECR에 추가](#rstudio-byoi-sdk-add-container-image)
+ [콘솔에서 SageMaker 이미지 만들기](#rstudio-byoi-create-console)
+ [에서 이미지 생성 AWS CLI](#rstudio-byoi-create-cli)

## SageMaker AI 호환 RStudio Docker 컨테이너 이미지를 Amazon ECR에 추가
<a name="rstudio-byoi-sdk-add-container-image"></a>

다음 단계를 사용하여 Amazon ECR에 Docker 컨테이너 이미지를 추가하세요.
+ Amazon ECR 리포지토리를 생성합니다.
+ Amazon ECR에 인증합니다.
+ SageMaker AI 호환 RStudio Docker 이미지를 구축합니다.
+ Amazon ECR 리포지토리에 이미지를 푸시합니다.

**참고**  
Amazon ECR 리포지토리는 도메인 AWS 리전 과 동일한에 있어야 합니다.

**Amazon ECR에 Docker 이미지를 생성 및 추가하려면**

1.  AWS CLI를 사용하여 Amazon ECR 리포지토리를 생성합니다. Amazon ECR 콘솔을 사용하여 리포지토리를 생성하려면 [리포지토리 생성](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html)을 참고하세요.

   ```
   aws ecr create-repository \
       --repository-name rstudio-custom \
       --image-scanning-configuration scanOnPush=true
   ```

   응답:

   ```
   {
       "repository": {
           "repositoryArn": "arn:aws:ecr:us-east-2:acct-id:repository/rstudio-custom",
           "registryId": "acct-id",
           "repositoryName": "rstudio-custom",
           "repositoryUri": "acct-id.dkr.ecr.us-east-2.amazonaws.com/rstudio-custom",
           ...
       }
   }
   ```

1. `create-repository` 명령의 응답으로 반환된 리포지토리 URI를 사용하여 Amazon ECR에 인증하세요. Docker 애플리케이션이 실행 중인지 확인합니다. 자세한 내용은 [레지스트리 인증](https://docs.aws.amazon.com/AmazonECR/latest/userguide/Registries.html#registry_auth)을 참고하세요.

   ```
   aws ecr get-login-password | \
       docker login --username AWS --password-stdin <repository-uri>
   ```

   응답:

   ```
   Login Succeeded
   ```

1. Docker 이미지를 구축합니다. Dockerfile이 들어 있는 디렉터리에서 다음 명령을 실행합니다.

   ```
   docker build .
   ```

1. 구축 이미지에 고유한 태그를 지정합니다.

   ```
   docker tag <image-id> "<repository-uri>:<tag>"
   ```

1. Amazon ECR 리포지토리에 컨테이너 이미지를 푸시합니다. 자세한 내용은 [ImagePush](https://docs.docker.com/engine/api/v1.40/#operation/ImagePush) 및 [이미지 푸시](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html)를 참고하세요.

   ```
   docker push <repository-uri>:<tag>
   ```

   응답:

   ```
   The push refers to repository [<account-id>.dkr.ecr.us-east-2.amazonaws.com/rstudio-custom]
   r: digest: <digest> size: 3066
   ```

## 콘솔에서 SageMaker 이미지 만들기
<a name="rstudio-byoi-create-console"></a>

**이미지 생성**

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

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

1. **관리자 구성**에서 **이미지**를 선택합니다.

1. **사용자 지정 이미지** 페이지에서 **이미지 생성**을 선택합니다.

1. **이미지 소스**의 경우 Amazon ECR에 있는 컨테이너 이미지의 레지스트리 경로를 입력합니다. 경로는 다음 형식입니다.

   ` acct-id.dkr.ecr.region.amazonaws.com/repo-name[:tag] or [@digest] `

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

1. **이미지 속성**에 다음을 입력합니다.
   + 이미지 이름 - 이 이름은 현재 AWS 리전에서 사용자의 계정에 대해 고유한 것이어야 합니다.
   + (선택 사항) 이미지 표시 이름 - 도메인 사용자 인터페이스에 표시되는 이름입니다. 입력하지 않으면 `Image name`이 표시됩니다.
   + (선택 사항) 설명 - 이미지에 대한 설명입니다.
   + IAM 역할 - 역할에는 [AmazonSageMakerFullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess) 정책이 연결되어야 합니다. 드롭다운 메뉴에서 다음 옵션 중 하나를 선택합니다.
     + 새 역할 생성 - 노트북 사용자가 액세스할 Amazon Simple Storage Service(S3) 버킷을 추가로 지정합니다. 더 많은 버킷에 대한 액세스 권한을 허용하지 않으려면 **없음**을 선택합니다.

       SageMaker AI는 `AmazonSageMakerFullAccess` 정책을 역할에 연결합니다. 이 역할을 통해 노트북 사용자는 확인 표시 옆에 나열된 Amazon S3 버킷에 액세스할 수 있습니다.
     + 사용자 지정 IAM 역할 ARN 입력 – IAM 역할의 Amazon 리소스 이름(ARN)을 입력합니다.
     + 기존 역할 사용 - 목록에서 기존 역할 중 하나를 선택합니다.
   + (선택 사항) 이미지 태그 - **새 태그 추가**를 선택합니다. 최대 50개의 태그를 추가할 수 있습니다. 태그는 SageMaker AI 콘솔 또는 SageMaker AI `Search` API를 사용하여 검색할 수 있습니다.

1. **이미지 유형**에서 RStudio 이미지를 선택합니다.

1. **제출**을 선택합니다.

새 이미지가 **사용자 지정 이미지** 목록에 표시되고 짧게 강조 표시됩니다. 이미지를 성공적으로 만든 후 이미지 이름을 선택하여 속성을 보거나 **버전 생성**을 선택하여 다른 버전을 만들 수 있습니다.

**다른 이미지 버전을 만들려면**

1. 이미지와 같은 행에서 **버전 생성**을 선택합니다.

1. **이미지 소스**에는 Amazon ECR 이미지의 레지스트리 경로를 입력합니다. 이미지는 이전 버전의 SageMaker AI 이미지에서 사용된 이미지와 같지 않아야 합니다.

RStudio에서 사용자 지정 이미지를 사용하려면 먼저 사용자 지정 이미지를 도메인에 첨부해야 합니다. 자세한 내용은 [사용자 지정 SageMaker 이미지 첨부](rstudio-byoi-attach.md) 단원을 참조하십시오.

## 에서 이미지 생성 AWS CLI
<a name="rstudio-byoi-create-cli"></a>

이 섹션에서는 AWS CLI를 사용하여 사용자 지정 Amazon SageMaker 이미지를 생성하는 방법을 보여줍니다.

다음 단계에 따라 SageMaker 이미지를 생성합니다.
+ `Image`를 생성합니다.
+ `ImageVersion`를 생성합니다.
+ 구성 파일을 생성합니다.
+ `AppImageConfig`를 생성합니다.

**SageMaker 이미지 엔티티를 만들려면**

1. SageMaker 이미지를 생성합니다. 역할 ARN에는 최소한 `AmazonSageMakerFullAccessPolicy` 정책이 첨부되어 있어야 합니다.

   ```
   aws sagemaker create-image \
       --image-name rstudio-custom-image \
       --role-arn arn:aws:iam::<acct-id>:role/service-role/<execution-role>
   ```

   응답:

   ```
   {
       "ImageArn": "arn:aws:sagemaker:us-east-2:acct-id:image/rstudio-custom-image"
   }
   ```

1. 이미지에서 SageMaker 이미지 버전을 생성합니다. 이미지를 Amazon ECR로 푸시할 때 선택한 고유 태그 값을 전달합니다.

   ```
   aws sagemaker create-image-version \
       --image-name rstudio-custom-image \
       --base-image <repository-uri>:<tag>
   ```

   응답:

   ```
   {
       "ImageVersionArn": "arn:aws:sagemaker:us-east-2:acct-id:image-version/rstudio-image/1"
   }
   ```

1. 이미지 버전이 성공적으로 생성되었는지 확인합니다.

   ```
   aws sagemaker describe-image-version \
       --image-name rstudio-custom-image \
       --version 1
   ```

   응답:

   ```
   {
       "ImageVersionArn": "arn:aws:sagemaker:us-east-2:acct-id:image-version/rstudio-custom-image/1",
       "ImageVersionStatus": "CREATED"
   }
   ```
**참고**  
응답이 `"ImageVersionStatus": "CREATED_FAILED"` 인 경우 응답에는 실패 이유도 포함됩니다. 권한 문제는 실패의 일반적인 원인입니다. Amazon CloudWatch Logs를 확인할 수도 있습니다. 로그 그룹의 이름은 `/aws/sagemaker/studio`입니다. 로그 스트림의 이름은 `$domainID/$userProfileName/KernelGateway/$appName`입니다.

1. 이름이 `app-image-config-input.json`인 구성 파일을 만듭니다. 앱 이미지 구성은 SageMaker 이미지를 Kernel Gateway 애플리케이션으로 실행하기 위한 구성에 사용됩니다.

   ```
   {
       "AppImageConfigName": "rstudio-custom-config"
   }
   ```

1. 이전 단계에서 만든 파일을 사용하여 AppImageConfig를 생성합니다.

   ```
   aws sagemaker create-app-image-config \
       --cli-input-json file://app-image-config-input.json
   ```

   응답:

   ```
   {
       "AppImageConfigArn": "arn:aws:sagemaker:us-east-2:acct-id:app-image-config/r-image-config"
   }
   ```

# 사용자 지정 SageMaker 이미지 첨부
<a name="rstudio-byoi-attach"></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 SageMaker AI 콘솔 또는 AWS Command Line Interface ()를 사용하여 Amazon SageMaker AI 도메인에 사용자 지정 RStudio 이미지를 연결하는 방법을 보여줍니다AWS CLI.

사용자 지정 SageMaker 이미지를 사용하려면 먼저 사용자 지정 RStudio 이미지를 도메인에 첨부해야 합니다. 이미지 버전을 첨부하면 RStudio Launcher에 표시되며 **이미지 선택** 드롭다운 목록에서 사용할 수 있습니다. 드롭다운을 사용하여 RStudio에서 사용하는 이미지를 변경할 수 있습니다.

사용자가 첨부할 수 있는 이미지 버전 수에는 제한이 있습니다. 한도에 도달하면 사용자는 먼저 버전을 분리해야 이미지의 다른 버전을 첨부할 수 있습니다.

**Topics**
+ [콘솔을 사용하여 도메인에 이미지 버전을 첨부합니다.](#rstudio-byoi-attach-console)
+ [를 사용하여 도메인에 기존 이미지 버전 연결 AWS CLI](#rstudio-byoi-attach-cli)

## 콘솔을 사용하여 도메인에 이미지 버전을 첨부합니다.
<a name="rstudio-byoi-attach-console"></a>

사용자는 SageMaker AI 콘솔의 제어판을 사용하여 사용자 지정 SageMaker 이미지 버전을 도메인에 연결할 수 있습니다. 사용자 지정 SageMaker 이미지와 이미지 버전을 만든 다음 해당 버전을 도메인에 첨부할 수도 있습니다.

**기존 이미지를 첨부하려면**

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

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

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

1. 원하는 도메인을 선택합니다.

1. **환경**을 선택합니다.

1. **도메인에 첨부된 사용자 지정 SageMaker Studio Classic 이미지**에서 **이미지 첨부**를 선택합니다.

1. **이미지 소스**의 경우 **기존 이미지** 또는 **새 이미지**를 선택합니다.

   **기존 이미지**를 선택하는 경우 Amazon SageMaker 이미지 스토어에서 이미지를 선택합니다.

   **새 이미지**를 선택하는 경우 Docker 이미지의 Amazon ECR 레지스트리 경로를 제공하세요. 경로는 도메인과 동일한 AWS 리전 에 있어야 합니다. Amazon ECR 리포지토리는 도메인과 동일한 계정에 있거나 SageMaker AI에 대한 계정 간 권한이 활성화되어 있어야 합니다.

1. 목록에서 기존 이미지를 선택합니다.

1. 목록에서 이미지 버전을 선택합니다.

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

1. **이미지 이름**, **이미지 표시 이름**, **설명**에 값을 입력합니다.

1. IAM 역할을 선택합니다. 자세한 내용은 [사용자 지정 RStudio 이미지 만들기](rstudio-byoi-create.md) 섹션을 참조하세요.

1. (선택 사항) 이미지에 태그를 추가합니다.

1. (선택 사항) **새 태그 추가**를 선택한 다음, 구성 태그를 추가합니다.

1. **이미지 유형**에서 **RStudio 이미지**를 선택합니다.

1. **제출**을 선택합니다.

이미지 버전이 도메인에 연결될 때까지 기다립니다. 버전이 첨부되면 **사용자 지정 이미지** 목록에 나타나고 잠시 강조 표시됩니다.

## 를 사용하여 도메인에 기존 이미지 버전 연결 AWS CLI
<a name="rstudio-byoi-attach-cli"></a>

 AWS CLI를 사용하여 도메인에 이미지 버전을 첨부하는 두 가지 방법이 있습니다. 첫 번째 방법에서는 버전이 첨부된 새 도메인을 생성합니다. 이 방법은 더 간단하지만 먼저 도메인을 생성하는 데 필요한 Amazon VPC(가상 사설 클라우드) 정보와 실행 역할을 지정해야 합니다.

이미 도메인에 온보딩한 경우 두 번째 방법을 사용하여 이미지 버전을 현재 도메인에 첨부할 수 있습니다. 이 경우 Amazon VPC 정보와 실행 역할을 지정하지 않아도 됩니다. 버전을 첨부한 후 도메인의 모든 애플리케이션을 삭제하고 RStudio를 다시 시작하세요.

### 새 도메인에 SageMaker 이미지 첨부
<a name="rstudio-byoi-cli-attach-new-domain"></a>

이 방법을 사용하려면 [먼저 AmazonSageMakerFullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess) 정책이 연결된 실행 역할을 지정해야 합니다.

다음 단계를 사용하여 도메인을 생성하고 사용자 지정 SageMaker AI 이미지를 연결하세요.
+ 기본 VPC ID 및 서브넷 ID를 가져옵니다.
+ 이미지를 지정하는 도메인의 구성 파일을 생성합니다.
+ 구성 파일로 도메인을 생성합니다.

**사용자 지정 SageMaker 이미지를 도메인에 추가하려면**

1. 기본 VPC ID를 가져옵니다.

   ```
   aws ec2 describe-vpcs \
       --filters Name=isDefault,Values=true \
       --query "Vpcs[0].VpcId" --output text
   ```

   응답:

   ```
   vpc-xxxxxxxx
   ```

1. 이전 단계의 VPC ID를 사용하여 기본 서브넷 ID를 가져옵니다.

   ```
   aws ec2 describe-subnets \
       --filters Name=vpc-id,Values=<vpc-id> \
       --query "Subnets[*].SubnetId" --output json
   ```

   응답:

   ```
   [
       "subnet-b55171dd",
       "subnet-8a5f99c6",
       "subnet-e88d1392"
   ]
   ```

1. `create-domain-input.json`이라는 이름의 구성 파일을 만듭니다. 이전 단계의 VPC ID, 서브넷 ID, `ImageName` 및 `AppImageConfigName`을 삽입합니다. `ImageVersionNumber`는 지정되지 않았으므로 이미지의 최신 버전이 사용되며, 이 경우에는 유일한 버전입니다. 실행 역할은 [사전 조건 완료](rstudio-byoi-prerequisites.md)의 요구 사항을 충족해야 합니다.

   ```
   {
     "DomainName": "domain-with-custom-r-image",
     "VpcId": "<vpc-id>",
     "SubnetIds": [
       "<subnet-ids>"
     ],
     "DomainSettings": {
       "RStudioServerProDomainSettings": {
         "DomainExecutionRoleArn": "<execution-role>"
       }
     },
     "DefaultUserSettings": {
       "ExecutionRole": "<execution-role>",
       "RSessionAppSettings": {
         "CustomImages": [
           {
            "AppImageConfigName": "rstudio-custom-config",
            "ImageName": "rstudio-custom-image"
           }
         ]
        }
     },
     "AuthMode": "IAM"
   }
   ```

1. 첨부된 사용자 지정 SageMaker 이미지를 사용하여 도메인을 생성합니다.

   ```
   aws sagemaker create-domain \
       --cli-input-json file://create-domain-input.json
   ```

   응답:

   ```
   {
       "DomainArn": "arn:aws:sagemaker:region:acct-id:domain/domain-id",
       "Url": "https://domain-id.studio.region.sagemaker.aws/..."
   }
   ```

### 새 도메인에 SageMaker 이미지 첨부
<a name="rstudio-byoi-cli-attach-current-domain"></a>

이 방법은 사용자가 도메인에 이미 온보딩했다고 가정합니다. 자세한 내용은 [Amazon SageMaker AI 도메인 개요](gs-studio-onboard.md) 섹션을 참조하세요.

**참고**  
도메인을 새 이미지 버전으로 업데이트하려면 먼저 도메인의 모든 애플리케이션을 삭제해야 합니다. 이러한 응용 프로그램을 삭제하는 방법에 대한 자세한 내용은 [Amazon SageMaker AI 도메인 삭제](gs-studio-delete-domain.md)을 참고하세요.

다음 단계에 따라 SageMaker 이미지를 현재 도메인에 추가합니다.
+ SageMaker AI 콘솔에서 `DomainID`를 가져옵니다.
+ `DomainID`를 사용하여 도메인의 `DefaultUserSettings`를 가져옵니다.
+ `ImageName`와 `AppImageConfig`을 `CustomImage`로 `DefaultUserSettings`에 추가합니다.
+ 사용자 지정 이미지를 포함하도록 도메인을 업데이트합니다.

**사용자 지정 SageMaker 이미지를 도메인에 추가하려면**

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

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

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

1. 원하는 도메인을 선택합니다.

1. **도메인 설정**을 선택하세요.

1. **일반 설정**에서 **도메인 ID**를 찾습니다. ID의 형식은 `d-xxxxxxxxxxxx`입니다.

1. 도메인 ID를 사용하여 도메인에 대한 설명을 가져옵니다.

   ```
   aws sagemaker describe-domain \
       --domain-id <d-xxxxxxxxxxxx>
   ```

   응답:

   ```
   {
       "DomainId": "d-xxxxxxxxxxxx",
       "DefaultUserSettings": {
         "KernelGatewayAppSettings": {
           "CustomImages": [
           ],
           ...
         }
       }
   }
   ```

1. `DefaultUserSettings`이라는 파일에 대한 응답의 `update-domain-input.json` 섹션을 저장합니다.

1. 이전 단계의 `ImageName` 및 `AppImageConfigName`을 사용자 지정 이미지로 삽입합니다. `ImageVersionNumber`는 지정되지 않았으므로 이미지의 최신 버전이 사용되며, 이 경우에는 유일한 버전입니다.

   ```
   {
       "DefaultUserSettings": {
           "RSessionAppSettings": { 
              "CustomImages": [ 
                 { 
                    "ImageName": "rstudio-custom-image",
                    "AppImageConfigName": "rstudio-custom-config"
                 }
              ]
           }
       }
   }
   ```

1. 도메인 ID 및 기본 사용자 설정 파일을 사용하여 도메인을 업데이트합니다.

   ```
   aws sagemaker update-domain \
       --domain-id <d-xxxxxxxxxxxx> \
       --cli-input-json file://update-domain-input.json
   ```

   응답:

   ```
   {
       "DomainArn": "arn:aws:sagemaker:region:acct-id:domain/domain-id"
   }
   ```

1. `RStudioServerPro` 애플리케이션을 삭제합니다. 최신 변경 내용을 적용하려면 먼저 RStudio Launcher UI에서 `RStudioServerPro` 도메인 공유 애플리케이션을 다시 시작해야 합니다.

   ```
   aws sagemaker delete-app \
       --domain-id <d-xxxxxxxxxxxx> --user-profile-name domain-shared \
       --app-type RStudioServerPro --app-name default
   ```

1. 새로운 `RStudioServerPro` 애플리케이션을 생성합니다. 먼저 AWS CLI를 사용하여 이 애플리케이션을 만들어야 합니다.

   ```
   aws sagemaker create-app \
       --domain-id <d-xxxxxxxxxxxx> --user-profile-name domain-shared \
       --app-type RStudioServerPro --app-name default
   ```

# RStudio에서 사용자 지정 SageMaker 이미지를 실행합니다.
<a name="rstudio-byoi-launch"></a>

콘솔에서 RStudio 애플리케이션을 실행할 때 사용자 지정 이미지를 사용할 수 있습니다. 사용자 지정 SageMaker 이미지를 생성하여 도메인에 연결하면 RStudio Launcher의 이미지 선택기 대화 상자에 이미지가 나타납니다. 새 RStudio 앱을 실행하려면 [RStudio Launcher에서 RSessions 시작 RStudio](rstudio-launcher.md) 단계를 따라 다음 이미지에 표시된 대로 사용자 지정 이미지를 선택합니다.

![\[이미지 드롭다운이 있는 RStudio 런처 스크린샷\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/rstudio-launcher-custom.png)


# 이미지 리소스 정리
<a name="rstudio-byoi-sdk-cleanup"></a>

이 설명서에서는 이전 섹션에서 만든 RStudio 이미지 리소스를 정리하는 방법을 보여줍니다. 이미지를 삭제하려면이 가이드와 AWS CLI같이 SageMaker AI 콘솔 또는를 사용하여 다음 단계를 완료합니다.
+ Amazon SageMaker AI 도메인에서 이미지 및 이미지 버전을 분리합니다.
+ 이미지, 이미지 버전 및 앱 이미지 구성을 삭제합니다.

이 단계를 완료한 후 사용자는 Amazon ECR에서 컨테이너 이미지와 리포지토리를 삭제할 수 있습니다. 컨테이너 이미지 및 리포지토리를 삭제하는 방법에 대한 자세한 내용은 [리포지토리 삭제](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-delete.html)를 참고하세요.

## SageMaker AI 콘솔에서 리소스 정리
<a name="rstudio-byoi-sdk-cleanup-console"></a>

도메인에서 이미지를 분리하면 이미지의 모든 버전이 분리됩니다. 이미지를 분리하면 도메인의 모든 사용자가 이미지 버전에 액세스할 수 없게 됩니다.

**이미지를 분리하려면**

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

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

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

1. 원하는 도메인을 선택합니다.

1. **환경**을 선택합니다.

1. **도메인에 연결된 사용자 지정 이미지**에서 이미지를 선택한 다음 **분리**를 선택합니다.

1. (선택 사항) SageMaker AI에서 이미지와 모든 버전을 삭제하려면 **선택한 이미지도 삭제...**를 선택합니다. 이렇게 해도 Amazon ECR에서 관련 이미지가 삭제되지는 않습니다.

1. **분리**를 선택합니다.

## 에서 리소스 정리 AWS CLI
<a name="rstudio-byoi-sdk-cleanup-cli"></a>

**리소스를 정리하려면**

1. 빈 사용자 지정 이미지 목록을 도메인에 전달하여 도메인에서 이미지 및 이미지 버전을 분리합니다. `update-domain-input.json`에서 생성한 [현재 도메인에 SageMaker 이미지 첨부](studio-byoi-attach.md#studio-byoi-sdk-attach-current-domain) 파일을 엽니다.

1. `RSessionAppSettings` 사용자 지정 이미지를 삭제한 후 파일을 저장합니다. `KernelGatewayAppSettings` 사용자 지정 이미지를 수정하지 마세요.

   ```
   {
       "DomainId": "d-xxxxxxxxxxxx",
       "DefaultUserSettings": {
         "KernelGatewayAppSettings": {
            "CustomImages": [
            ],
            ...
         },
         "RSessionAppSettings": { 
           "CustomImages": [ 
           ],
           "DefaultResourceSpec": { 
           }
           ...
         }
       }
   }
   ```

1. 도메인 ID 및 기본 사용자 설정 파일을 사용하여 도메인을 업데이트합니다.

   ```
   aws sagemaker update-domain \
       --domain-id <d-xxxxxxxxxxxx> \
       --cli-input-json file://update-domain-input.json
   ```

   응답:

   ```
   {
       "DomainArn": "arn:aws:sagemaker:us-east-2:acct-id:domain/d-xxxxxxxxxxxx"
   }
   ```

1. 앱 이미지 구성을 삭제합니다.

   ```
   aws sagemaker delete-app-image-config \
       --app-image-config-name rstudio-image-config
   ```

1. SageMaker 이미지를 삭제하면 모든 이미지 버전도 삭제됩니다. 이미지 버전으로 표시되는 Amazon ECR의 컨테이너 이미지는 삭제되지 않습니다.

   ```
   aws sagemaker delete-image \
       --image-name rstudio-image
   ```