

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# SageMaker JupyterLab
<a name="studio-updated-jl"></a>

在 Amazon SageMaker Studio 內建立 JupyterLab 空間以啟動 JupyterLab 應用程式。JupyterLab 空間是 Studio 內的私有或共用空間，可管理執行 JupyterLab 應用程式所需的儲存和運算資源。JupyterLab 應用程式是適用於筆記本、程式碼和資料的 Web 型互動式開發環境 (IDE)。使用 JupyterLab 應用程式靈活且廣泛的介面來設定和安排機器學習 (ML) 工作流程。

根據預設，JupyterLab 應用程式隨附 SageMaker Distribution 映像。Distribution 映像具有熱門套件，例如下列套件：
+ PyTorch
+ TensorFlow
+ Keras
+ NumPy
+ Pandas
+ Scikit-learn

您可以使用共用空間，即時與其他使用者在 Jupyter 筆記本上協作。如需空間共用的詳細資訊，請參閱[與共用空間協作](domain-space.md)。

在 JupyterLab 應用程式內，您可以使用 Amazon Q Developer (這是採用生成式 AI 技術的程式碼配套) 來產生、偵錯和解釋程式碼。如需使用 Amazon Q Developer 的相關資訊，請參閱 [JupyterLab 使用者指南](studio-updated-jl-user-guide.md)。如需設定 Amazon Q Developer 的相關資訊，請參閱 [JupyterLab 管理員指南](studio-updated-jl-admin-guide.md)。

在相同的 Jupyter 筆記本中建置統一的分析和 ML 工作流程。直接從您的筆記本在 Amazon EMR 和無 AWS Glue 伺服器基礎設施上執行互動式Spark任務。使用內嵌 Spark UI 更快速地監控和偵錯任務。只需幾個步驟，即可將筆記本排程為任務，以自動準備資料。

JupyterLab 應用程式可協助您與同事合作。使用 JupyterLab IDE 的內建 Git 整合來共用版本程式碼。如果您有 Amazon EFS 磁碟區，請自帶檔案儲存系統。

JupyterLab 應用程式會在單一 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上執行，並使用單一 Amazon Elastic Block Store (Amazon EBS) 磁碟區進行儲存。您可以切換更快的執行個體，或根據您的需求增加 Amazon EBS 磁碟區大小。

JupyterLab 4 應用程式會在 Studio 內的 JupyterLab 空間中執行。Studio Classic 使用 JupyterLab 3 應用程式。JupyterLab 4 提供以下優勢：
+ 比 Amazon SageMaker Studio Classic 更快的 IDE，特別是大型筆記本
+ 改善文件搜尋
+ 效能更佳且可存取的文字編輯器

如需 JupyterLab 的詳細資訊，請參閱 [JupyterLab 文件](https://jupyterlab.readthedocs.io/en/stable/#)。

**Topics**
+ [JupyterLab 使用者指南](studio-updated-jl-user-guide.md)
+ [JupyterLab 管理員指南](studio-updated-jl-admin-guide.md)

# JupyterLab 使用者指南
<a name="studio-updated-jl-user-guide"></a>

本指南向 JupyterLab 使用者展示如何在 SageMaker Studio 內執行分析和機器學習工作流程。您可以取得快速儲存並擴增或縮減運算，取決於您的需求。

JupyterLab 同時支援私有和共用空間。私有空間的範圍限定為網域中的單一使用者。共用空間可讓您網域中的其他使用者即時與您合作。如需 Studio 空間的相關資訊，請參閱 [Amazon SageMaker Studio 空間](studio-updated-spaces.md)。

若要開始使用 JupyterLab，請建立空間並啟動您的 JupyterLab 應用程式。執行 JupyterLab 應用程式的空間是 JupyterLab 空間。JupyterLab 空間使用單一 Amazon EC2 執行個體進行運算，並使用單一 Amazon EBS 磁碟區進行儲存。您空間中的所有內容，例如程式碼、git 設定檔和環境變數，都會存放在相同的 Amazon EBS 磁碟區。磁碟區具有 3000 IOPS 和每秒 125 MB (MBps) 的輸送量。您可以使用快速儲存，在同一個執行個體上開啟和執行多個 Jupyter 筆記本。您也可以非常快速地切換筆記本中的核心。

您的管理員已為您的空間設定預設 Amazon EBS 儲存體設定。預設儲存大小為 5 GB，但您可以增加您取得的空間量。您可以與管理員談論，以提供您指導方針。

您可以切換用來執行 JupyterLab 的 Amazon EC2 執行個體類型，根據您的需求擴增或縮減運算。**快速啟動**執行個體的啟動速度比其他執行個體快得多。

您的管理員可能會為您提供生命週期組態，以自訂您的環境。您可以在建立空間時指定生命週期組態。

如果您的管理員可讓您存取 Amazon EFS，您可以設定 JupyterLab 空間來存取它。

根據預設，JupyterLab 應用程式會使用 SageMaker Distribution 映像。這包括對許多機器學習、分析和深度學習套件的支援。不過，如果您需要自訂映像，您的管理員可以協助提供自訂映像的存取權。

Amazon EBS 磁碟區會持續存在，與執行個體的生命週期無關。當您變更執行個體時，不會遺失資料。使用 conda 和 pip 套件管理程式庫來建立可重現的自訂環境，這些自訂環境即使在您切換執行個體類型時也能持續存在。

開啟 JupyterLab 後，您可以使用終端機設定環境。若要開啟終端機，請導覽至**啟動器**，然後選擇**終端機**。

以下是您可以在 JupyterLab 中設定環境的不同方式範例。

**注意**  
在 Studio 內，您可以使用生命週期組態來自訂您的環境，但我們建議您改用套件管理員。使用生命週期組態是更容易出錯的方法。新增或移除相依性比偵錯生命週期組態指令碼更容易。它也可以增加 JupyterLab 啟動時間。  
如需生命週期組態的相關資訊，請參閱[搭配 JupyterLab 的生命週期組態](jl-lcc.md)。

**Topics**
+ [建立空間](studio-updated-jl-user-guide-create-space.md)
+ [設定空間](studio-updated-jl-user-guide-configure-space.md)
+ [使用套件管理員自訂您的環境](studio-updated-jl-user-guide-customize-package-manager.md)
+ [清除 conda 環境](studio-updated-jl-clean-up-conda.md)
+ [在執行個體類型之間共用 conda 環境](studio-updated-jl-create-conda-share-environment.md)
+ [使用 Amazon Q 加速機器學習工作流程](studio-updated-jl-user-guide-use-amazon-q.md)

# 建立空間
<a name="studio-updated-jl-user-guide-create-space"></a>

若要開始使用 JupyterLab，請建立空間或選擇管理員為您建立的空間，然後開啟 JupyterLab。

使用下列程序來建立空間並開啟 JupyterLab。

**建立空間並開啟 JupyterLab**

1. 重新開啟 Studio。如需開啟 Studio 的相關資訊，請參閱[啟動 Amazon SageMaker Studio](studio-updated-launch.md)。

1. 選擇 **JupyterLab**。

1. 選擇**建立 JupyterLab 空間**。

1. 針對**名稱**，指定空間的名稱。

1. (選用) 選取**與我的網域共用**以建立共用空間。

1. 選擇**建立空間**。

1. (選用) 針對**執行個體**，指定執行空間的 Amazon EC2 執行個體。

1. (選用) 針對**映像**，請指定管理員為了自訂您環境所提供的映像。
**重要**  
允許 Studio 使用者建立空間的自訂 IAM 政策，也必須授與列出映像 (`sagemaker: ListImage`) 以檢視自訂映像的許可。若要新增許可，請參閱《*AWS Identity and Access Management* 使用者指南》中的[新增或移除身分許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。  
提供許可來建立 SageMaker AI 資源的 [AWS Amazon SageMaker AI 的 受管政策](security-iam-awsmanpol.md) 已包含建立這些資源時列出映像的許可。

1. (選用) 針對**空間設定**，請指定下列項目：
   + **儲存 (GB)** – 高達 100 GB 或管理員指定的數量。
   + **生命週期組態** – 管理員指定的生命週期組態。
   + **連接自訂 EFS 檔案系統** - 管理員提供存取權的 Amazon EFS。

1. 選擇**執行空間**。

1. 選擇**開啟 JupyterLab**。

# 設定空間
<a name="studio-updated-jl-user-guide-configure-space"></a>

建立 JupyterLab 空間後，您可以將其設定為執行下列動作：
+ 變更執行個體類型
+ 變更儲存磁碟區。
+ (需要管理員設定) 使用自訂映像。
+ (需要管理員設定) 使用生命週期組態。
+ (需要管理員設定) 連接自訂 Amazon EFS。

**重要**  
每次設定 JupyterLab 空間時，您必須將其停止。請使用下列程序設定空間。

**設定空間**

1. 在 Studio 內，導覽至 JupyterLab 應用程式頁面。

1. 選擇空間的名稱。

1. (選用) 針對**映像**，請指定管理員為了自訂您環境所提供的映像。
**重要**  
允許 Studio 使用者建立空間的自訂 IAM 政策，也必須授與列出映像 (`sagemaker: ListImage`) 以檢視自訂映像的許可。若要新增許可，請參閱《*AWS Identity and Access Management* 使用者指南》中的[新增或移除身分許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。  
提供許可來建立 SageMaker AI 資源的 [AWS Amazon SageMaker AI 的 受管政策](security-iam-awsmanpol.md) 已包含建立這些資源時列出映像的許可。

1. (選用) 針對**空間設定**，請指定下列項目：
   + **儲存 (GB)** - 高達 100 GB 或管理員為空間設定的數量。
   + **生命週期組態** - 管理員提供的生命週期組態。
   + **連接自訂 EFS 檔案系統** - 管理員提供存取權的 Amazon EFS。

1. 選擇**執行空間**。

當您開啟 JupyterLab 應用程式時，您的空間具有更新的組態。

# 使用套件管理員自訂您的環境
<a name="studio-updated-jl-user-guide-customize-package-manager"></a>

使用 pip 或 conda 自訂您的環境。建議使用套件管理員，而非生命週期組態指令碼。

## 建立和啟用您的自訂環境
<a name="studio-updated-jl-create-basic-conda"></a>

本節提供您可以在 JupyterLab 中設定環境的不同方式範例。

基本 conda 環境具有 SageMaker AI 中工作流程所需的套件數量下限。使用下列範本建立基本 conda 環境：

```
# initialize conda for shell interaction
conda init

# create a new fresh environment
conda create --name test-env

# check if your new environment is created successfully
conda info --envs

# activate the new environment
conda activate test-env

# install packages in your new conda environment
conda install pip boto3 pandas ipykernel

# list all packages install in your new environment 
conda list

# parse env name information from your new environment
export CURRENT_ENV_NAME=$(conda info | grep "active environment" | cut -d : -f 2 | tr -d ' ')

# register your new environment as Jupyter Kernel for execution 
python3 -m ipykernel install --user --name $CURRENT_ENV_NAME --display-name "user-env:($CURRENT_ENV_NAME)"

# to exit your new environment
conda deactivate
```

下圖顯示您已建立的環境位置。

![\[test-env 環境會顯示在畫面的右上角。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/juptyer-notebook-environment-location.png)


若要變更您的環境，請選擇它，然後從下拉式功能表中選取選項。

![\[核取記號及其對應文字會顯示您先前建立的範例環境。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/jupyter-notebook-select-env.png)


選擇**選取**以選取環境的核心。

## 使用特定 Python 版本建立 conda 環境
<a name="studio-updated-jl-create-conda-version"></a>

清除您未使用的 conda 環境，有助於釋放磁碟空間並改善效能。使用下列範本清除 conda 環境：

```
# create a conda environment with a specific python version
conda create --name py38-test-env python=3.8.10

# activate and test your new python version
conda activate py38-test-env & python3 --version

# Install ipykernel to facilicate env registration
conda install ipykernel

# parse env name information from your new environment
export CURRENT_ENV_NAME=$(conda info | grep "active environment" | cut -d : -f 2 | tr -d ' ')

# register your new environment as Jupyter Kernel for execution 
python3 -m ipykernel install --user --name $CURRENT_ENV_NAME --display-name "user-env:($CURRENT_ENV_NAME)"

# deactivate your py38 test environment
conda deactivate
```

## 使用一組特定套件建立 conda 環境
<a name="studio-updated-jl-create-conda-specific-packages"></a>

使用下列範本搭配特定 Python 版本和一組套件來建立 conda 環境：

```
# prefill your conda environment with a set of packages,
conda create --name py38-test-env python=3.8.10 pandas matplotlib=3.7 scipy ipykernel

# activate your conda environment and ensure these packages exist
conda activate py38-test-env

# check if these packages exist
conda list | grep -E 'pandas|matplotlib|scipy'

# parse env name information from your new environment
export CURRENT_ENV_NAME=$(conda info | grep "active environment" | cut -d : -f 2 | tr -d ' ')

# register your new environment as Jupyter Kernel for execution 
python3 -m ipykernel install --user --name $CURRENT_ENV_NAME --display-name "user-env:($CURRENT_ENV_NAME)"

# deactivate your conda environment
conda deactivate
```

## 從現有環境複製 conda
<a name="studio-updated-jl-create-conda-clone"></a>

複製您的 conda 環境以保留其運作狀態。您可以在複製的環境中進行實驗，而不必擔心在測試環境中引入重大變更。

使用下列命令來複製環境。

```
# create a fresh env from a base environment 
conda create --name py310-base-ext --clone base # replace 'base' with another env

# activate your conda environment and ensure these packages exist
conda activate py310-base-ext

# install ipykernel to register your env
conda install ipykernel

# parse env name information from your new environment
export CURRENT_ENV_NAME=$(conda info | grep "active environment" | cut -d : -f 2 | tr -d ' ')

# register your new environment as Jupyter Kernel for execution 
python3 -m ipykernel install --user --name $CURRENT_ENV_NAME --display-name "user-env:($CURRENT_ENV_NAME)"

# deactivate your conda environment
conda deactivate
```

## 從參考 YAML 檔案複製 conda
<a name="studio-updated-jl-create-conda-yaml"></a>

從參考 YAML 檔案建立 conda 環境。以下是您可以使用的 YAML 檔案範例。

```
# anatomy of a reference environment.yml
name: py311-new-env
channels:
  - conda-forge
dependencies:
  - python=3.11
  - numpy
  - pandas
  - scipy
  - matplotlib
  - pip
  - ipykernel
  - pip:
      - git+https://github.com/huggingface/transformers
```

在 `pip` 下，我們建議只指定無法與 Conda 搭配使用的相依性。

使用下列命令從 YAML 檔案建立 conda 環境。

```
# create your conda environment 
conda env create -f environment.yml

# activate your env
conda activate py311-new-env
```

# 清除 conda 環境
<a name="studio-updated-jl-clean-up-conda"></a>

清除您未使用的 conda 環境，有助於釋放磁碟空間並改善效能。使用下列範本清除 conda 環境：

```
# list your environments to select an environment to clean
conda info --envs # or conda info -e

# once you've selected your environment to purge
conda remove --name test-env --all

# run conda environment list to ensure the target environment is purged
conda info --envs # or conda info -e
```

# 在執行個體類型之間共用 conda 環境
<a name="studio-updated-jl-create-conda-share-environment"></a>

您可以將 conda 環境儲存至 Amazon EBS 磁碟區之外的 Amazon EFS 目錄，以共用這些環境。另一個使用者可以在您儲存環境的目錄中存取該環境。

**重要**  
共用您的環境有其限制。例如，我們不建議應該在 GPU Amazon EC2 執行個體上執行的環境，蓋過 CPU 執行個體上執行的環境。

使用下列命令做為範本，指定您要建立自訂環境的目標目錄。您要在特定路徑內建立 conda。您可以在 Amazon EFS 目錄內建立它。您可以啟動新的執行個體，並執行 conda 啟用路徑，然後在 Amazon EFS 內執行它。

```
# if you know your environment path for your conda environment
conda create --prefix /home/sagemaker-user/my-project/py39-test python=3.9

# activate the env with full path from prefix
conda activate home/sagemaker-user/my-project/py39-test

# parse env name information from your new environment
export CURRENT_ENV_NAME=$(conda info | grep "active environment" | awk -F' : ' '{print $2}' | awk -F'/' '{print $NF}')

# register your new environment as Jupyter Kernel for execution 
python3 -m ipykernel install --user --name $CURRENT_ENV_NAME --display-name "user-env-prefix:($CURRENT_ENV_NAME)"

# deactivate your conda environment
conda deactivate
```

# 使用 Amazon Q 加速機器學習工作流程
<a name="studio-updated-jl-user-guide-use-amazon-q"></a>

Amazon Q Developer 是用於機器學習開發的 AI 輔助元件。透過 Amazon Q Developer，您可以：
+ 接收有關獨立或與其他 AWS 服務結合使用 SageMaker AI step-by-step指導。
+ 取得範例程式碼以開始使用 ML 任務，例如資料準備、訓練、推論和 MLOps。
+ 接收故障診斷協助，以偵錯並解決執行程式碼時遇到的錯誤。

Amazon Q Developer 無縫整合到您的 JupyterLab 環境。若要使用 Amazon Q Developer，請從 JupyterLab 環境或程式碼編輯器環境的左側導覽中選擇 **Q**。

如果您沒有看到 **Q** 圖示，您的管理員需要為您設定。如需設定 Amazon Q Developer 的詳細資訊，請參閱 [為您的使用者設定 Amazon Q Developer](studio-updated-amazon-q-admin-guide-set-up.md)。

Amazon Q 會自動提供建議，協助您撰寫程式碼。您也可以透過聊天介面要求建議。

# 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) 已包含建立這些資源時新增標籤的許可。

本管理員指南描述 SageMaker AI JupyterLab 資源，例如來自 Amazon Elastic Block Store (Amazon EBS) 和 Amazon Elastic Compute Cloud (Amazon EC2) 的資源。這些主題也說明如何提供使用者存取和變更儲存體大小。

SageMaker AI JupyterLab 空間由下列資源組成：
+ 存放所有資料的不同 Amazon EBS 磁碟區，例如程式碼和環境變數。
+ 用來執行空間的 Amazon EC2 執行個體。
+ 用來執行 JupyterLab 的映像。

**注意**  
應用程式無權存取其他應用程式的 EBS 磁碟區。例如，程式碼編輯器 (以 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 磁碟區的預設大小為 5 GB。您最多可將磁碟區大小增加至 16,384 GB。如果您未執行任何操作，您的使用者可將其磁碟區大小增加到 100 GB。磁碟區大小在六小時內只能變更一次。

與 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 金鑰，內部的資料`/home/sagemaker-user`會使用 AWS 受管金鑰加密。無論您是否指定 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 生命週期事件觸發的 Shell 指令碼，例如啟動新的 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 管理主控台 來自動化 JupyterLab 環境的自訂。

生命週期組態是由 JupyterLab 生命週期事件觸發的 Shell 指令碼，例如啟動新的 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 網域 (網域) 和使用者設定檔
<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>

了解如何使用 建立生命週期組態 AWS 管理主控台 ，以自動化 Studio 環境的自訂。

### 步驟 1：建立生命週期組態
<a name="jl-lcc-create-console-step1"></a>

使用下列程序來建立一個列印 `Hello World` 的生命週期組態指令碼。

**建立生命週期組態**

1. 開啟 Amazon SageMaker AI 主控台，網址為 [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)。

1. 在左側導覽窗格中，選擇**管理員組態**。

1. 在**管理員組態**下，選擇**生命週期組態**。

1. 選擇 **JupyterLab** 索引標籤。

1. 選擇**建立組態**。

1. 針對**名稱**，指定生命週期組態的名稱。

1. 針對**指令碼**下的文字方塊，指定下列生命週期組態：

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

1. 選擇**建立組態**。

### 步驟 2：將生命週期組態連接至您的 Amazon SageMaker AI 網域 (網域) 和使用者設定檔
<a name="jl-lcc-create-console-step2"></a>

所有使用者都會繼承與網域層級相關聯的生命週期組態指令碼。但是，在使用者設定檔層級關聯的指令碼範圍是特定使用者。

您可以將多個生命週期組態連接至 JupyterLab 的網域或使用者設定檔。

使用下列程序將生命週期組態連接至網域。

**將生命週期組態連接至網域**

1. 開啟 Amazon SageMaker AI 主控台，網址為 [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)。

1. 在左側導覽窗格中，選擇**管理員組態**。

1. 在**管理員組態**下，選擇**網域**。

1. 從網域清單中，選取要連接生命週期組態的網域。

1. 從**網域詳細資料**中，選擇**環境**索引標籤。

1. 在**個人 Studio 應用程式的生命週期組態**下，選擇**連接**。

1. 在**來源**下，選擇**現有的組態**。

1. 在 **Studio 生命週期組態**下，選取您在上一個步驟中建立的生命週期組態。

1. 選取**連接至網域**。

使用下列程序將生命週期組態連接至使用者設定檔。

**將生命週期組態連接至使用者設定檔**

1. 開啟 Amazon SageMaker AI 主控台，網址為 [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)。

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 指令碼的預設輸出。您可以寫入 `STDERR`，只要把 `>&2` 附加到 bash 命令的末端。例如 `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 延伸模組，以輸入 Git 儲存庫的 URL、將其複製到您的環境中、推送變更，以及檢視遞交歷程記錄。您也可以將建議的 Git 儲存庫 URL 連接至 Amazon SageMaker AI 網域 (網域) 或使用者設定檔。

下列各節說明如何連接或分離 Git 儲存庫 URL。

**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)。

## 將 Git 儲存庫連接至 Amazon SageMaker AI 網域 (網域) 或使用者設定檔
<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 延伸模組，讓您輸入 Git 儲存庫的 URL、將其複製到您的環境、推送變更，以及檢視遞交歷程記錄。

如果儲存庫是私有且需要憑證才能存取，則您會收到輸入使用者憑證的提示。您的憑證包含使用者名稱和個人存取權杖。如需有關個人存取權杖的更多相關資訊，請參閱[管理您的個人存取權杖](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。

以下頁面將提供 JupyterLab 特定資訊和範本，以建立您自己的自訂 SageMaker AI 映像。這是為了補充 Amazon SageMaker Studio 的資訊和指示，以建立您自己的 SageMaker AI 映像並自帶映像至 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 規格](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/byoi-specifications.html)。  
您可以在《Amazon SageMaker Unified Studio 使用者指南》**的 [Dockerfile 範例中](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/byoi-specifications.html#byoi-specifications-example)找到 SageMaker Unified Studio 的 `Dockerfile` 範例。

------
#### [ 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)。

更新您已建立的 JupyterLab 空間，以使用最新版的 SageMaker Distribution 映像來存取最新的功能。您可以使用 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 Resource Name (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 AI 端點和配額](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html)。