

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 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 マネジメントコンソール 、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 バージョンのインストール](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html#install-tool-bundled)の AWS CLI 手順に従って、 を更新します。
+ ローカルマシンで `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>

を使用してライフサイクル設定を作成し、Studio 環境のカスタマイズ AWS マネジメントコンソール を自動化する方法について説明します。

### 手順 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 スクリプトのデフォルト出力です。bash コマンドの最後に `>&2` を追加することで、`STDERR` に書き込むことができます。例えば、`echo 'hello'>&2`。

ライフサイクル設定のログは、Amazon CloudWatch AWS アカウント を使用して に発行されます。これらのログは、CloudWatch コンソールの `/aws/sagemaker/studio` ログストリームでも確認できます。

1. CloudWatch コンソールの [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/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":
    []
  }
}'
```