

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

# LCC スクリプトを使用した SageMaker ノートブックインスタンスのカスタマイズ
<a name="notebook-lifecycle-config"></a>

**重要**  
Amazon SageMaker Studio または Amazon SageMaker Studio Classic に Amazon SageMaker リソースの作成を許可するカスタム IAM ポリシーでは、これらのリソースにタグを追加するアクセス許可も付与する必要があります。Studio と Studio Classic は、作成したリソースに自動的にタグ付けするため、リソースにタグを追加するアクセス許可が必要になります。IAM ポリシーで Studio と Studio Classic によるリソースの作成が許可されていても、タグ付けが許可されていない場合は、リソースを作成しようとしたときに「AccessDenied」エラーが発生する可能性があります。詳細については、「[SageMaker AI リソースにタグ付けのアクセス許可を付与する](security_iam_id-based-policy-examples.md#grant-tagging-permissions)」を参照してください。  
SageMaker リソースを作成するためのアクセス許可を付与する [AWS Amazon SageMaker AI の マネージドポリシー](security-iam-awsmanpol.md) には、それらのリソースの作成中にタグを追加するためのアクセス許可もあらかじめ含まれています。

ノートブックインスタンスの作成時または起動時にのみ実行されるシェルスクリプトは、*ライフサイクル設定* (LCC) で提供されます。ノートブックインスタンスを作成するときは、新しい LCC を作成するか、既に保持している LCC をアタッチできます。ライフサイクル設定スクリプトは、次のユースケースに役立ちます。
+ ノートブックインスタンスへのパッケージまたはサンプルノートブックをインストールする
+ ノートブックインスタンスのネットワークとセキュリティを設定する
+ シェルスクリプトを使用してノートブックインスタンスをカスタマイズする

ライフサイクル設定スクリプトを使用して、ノートブックから AWS サービスにアクセスすることもできます。たとえば、ノートブックを使用して Amazon EMR インスタンスなどの他の AWS リソースを制御できるスクリプトを作成できます。

[https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples](https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples) では、ノートブックインスタンスをカスタマイズするための一般的なユースケースに対応するノートブックライフサイクル設定スクリプトのパブリックリポジトリを維持しています。

**注記**  
各スクリプトの長さは 16384 文字に制限されています。  
両方のスクリプトで使用できる `$PATH` 環境変数の値は `/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin` です。`$PWD` 環境変数の値である作業ディレクトリは、`/` です。  
ログストリーム `[notebook-instance-name]/[LifecycleConfigHook]` の、ロググループ `/aws/sagemaker/NotebookInstances` の、ノートブックインスタンスのライフサイクル設定の CloudWatch ログの表示。  
スクリプトは 5 分以上実行できません。スクリプトが 5 分以上実行されると、スクリプトは失敗し、ノートブックインスタンスは作成または開始されません。スクリプトの実行時間を短縮できるように、次のことを試してください。  
必要なステップを削減します。例えば、大きなパッケージをインストールする Conda 環境を制限します。
並列プロセスでタスクを実行します。
スクリプトで `nohup` コマンドを使用します。

SageMaker AI コンソールで、**[ライフサイクル設定]** を選択すると、以前に作成したノートブックインスタンスのライフサイクル設定のリストが表示されます。ノートブックインスタンス LCC は、新しいノートブックインスタンスを作成する際にアタッチできます。ノートブックインスタンスの作成の詳細については、「[Amazon SageMaker ノートブックインスタンスを作成する](howitworks-create-ws.md)」を参照してください。

## ライフサイクル設定のベストプラクティス
<a name="nbi-lifecycle-config-bp"></a>

以下は、ライフサイクル設定の使用に関するベストプラクティスです。

**重要**  
ライフサイクル設定スクリプトに機密情報を保存することはお勧めしません。

**重要**  
ライフサイクル設定スクリプトは、ノートブックユーザーのルートアクセス設定に関係なく、ルートアクセスとノートブックインスタンスの IAM 実行ロール権限で実行されます。ライフサイクル設定を作成または変更し、ノートブックインスタンスを更新する権限を持つプリンシパルは、実行ロールの認証情報を使用してコードを実行できます。詳細については「[SageMaker ノートブックインスタンスへのルートアクセスを制御する](nbi-root-access.md)」を参照してください。
+ ライフサイクル設定は、`root` ユーザーとして実行されます。スクリプトが `/home/ec2-user/SageMaker` ディレクトリ内で何らかの変更を行う場合 (例えば、`pip` を使用してパッケージをインストールする場合) は、`ec2-user` ユーザーとして `sudo -u ec2-user` コマンドを実行します。これは、Amazon SageMaker AI の実行ユーザーと同じユーザーです。
+ SageMaker AI ノートブックインスタンスは、`conda` 環境を使って、Jupyter ノートブック用に異なるカーネルを実装します。1 つ以上のノートブックカーネルで使用可能なパッケージをインストールするには、インストールするパッケージのカーネルを含む conda 環境をアクティブにする `conda` 環境コマンドで、パッケージをインストールするためのコマンドを囲みます。

  例えば、`python3` 環境にのみパッケージをインストールする場合は、次のコードを使用します。

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

  ノートブックインスタンス内のすべての conda 環境にパッケージをインストールする場合は、次のコードを使用します。

  ```
  #!/bin/bash
  sudo -u ec2-user -i <<EOF
  
  # Note that "base" is special environment name, include it there as well.
  for env in base /home/ec2-user/anaconda3/envs/*; do
      source /home/ec2-user/anaconda3/bin/activate $(basename "$env")
  
      # Installing packages in the Jupyter system environment can affect stability of your SageMaker
      # Notebook Instance.  You can remove this check if you'd like to install Jupyter extensions, etc.
      if [ $env = 'JupyterSystemEnv' ]; then
        continue
      fi
  
      # Replace {{myPackage}} with the name of the package you want to install.
      pip install --upgrade --quiet {{myPackage}}
      # You can also perform "conda install" here as well.
  
      source /home/ec2-user/anaconda3/bin/deactivate
  done
  
  EOF
  ```
+ すべての conda 環境は、デフォルトの環境フォルダ (/home/user/anaconda3/envs) に保存する必要があります。

**重要**  
スクリプトを作成または変更するときは、ノートブックの作成時にコンソールで使用できるテキストエディタなど、Unix スタイルの改行を提供するテキストエディタを使用することをお勧めします。Linux 以外のオペレーティングシステムからテキストをコピーすると、互換性のない改行が含まれ、予期しないエラーが発生する可能性があります。