

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

# インストールガイド
<a name="scheduled-notebook-installation"></a>

以下に、JupyterLab 環境でノートブックジョブを使用するためにインストールする必要があるものについて説明します。

**Amazon SageMaker Studio と Amazon SageMaker Studio Lab の場合**

ノートブックが Amazon SageMaker Studio または Amazon SageMaker Studio Lab にある場合は、追加のインストールを行う必要はありません。SageMaker Notebook Jobs はプラットフォームに組み込まれています。Studio に必要なアクセス許可を設定する方法については、「[Studio のポリシーとアクセス許可を設定する](scheduled-notebook-policies-studio.md)」を参照してください。

**ローカル Jupyter Notebook の場合**

ローカルの JupyterLab 環境で SageMaker Notebook Jobs を使用する場合は、追加インストールを実行する必要があります。

SageMaker Notebook Jobs をインストールするには、次の手順を実行します。

1. Python 3 をインストールします。詳細については、「[Installing Python 3 and Python Packages](https://www.codecademy.com/article/install-python3)」を参照してください。

1. JupyterLab バージョン 4 以降をインストールします。詳細については、[JupyterLab SDK ドキュメント](https://jupyterlab.readthedocs.io/en/stable/getting_started/installation.html)を参照してください。

1. をインストールします AWS CLI。詳細については、「[AWS CLI CLI の最新バージョンを使用してインストールまたは更新を行う](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

1. 2 セットのアクセス許可をインストールします。IAM ユーザーは SageMaker AI にジョブを送信するためのアクセス許可を必要とし、送信されると、ノートブックジョブ自体が IAM ロールを引き継ぎます。このロールには、ジョブタスクに応じてリソースにアクセスするためのアクセス許可が必要です。

   1. IAM ユーザーをまだ作成していない場合は、「[AWS アカウント での IAM ユーザーの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html)」を参照してください。

   1. ノートブックジョブロールをまだ作成していない場合は、「[IAM ユーザーにアクセス許可を委任するロールの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)」を参照してください。

   1. 必要なアクセス許可と信頼ポリシーをユーザーとロールにアタッチします。手順とアクセス許可の詳細については、「[ローカル Jupyter 環境にポリシーとアクセス許可をインストールする](scheduled-notebook-policies-other.md)」を参照してください。

1. 新しく作成した IAM ユーザーの AWS 認証情報を生成し、JupyterLab 環境の認証情報ファイル (\$1/.aws/credentials) に保存します。これは CLI コマンド `aws configure` で行うことができます。手順については、「[設定ファイルと認証情報ファイルの設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)」の「コマンドを使用した構成設定の設定と表示」を参照してください。**

1. (オプション) デフォルトでは、スケジューラー拡張機能は Python 2.0 で事前構築済みの SageMaker AI Docker イメージを使用します。ノートブックで使用されているデフォルト以外のカーネルは、すべてコンテナにインストールする必要があります。ノートブックをコンテナまたは Docker イメージで実行する場合は、Amazon Elastic Container Registry (Amazon ECR) イメージを作成する必要があります。Docker イメージを Amazon ECR にプッシュする方法については、「[Docker イメージをプッシュする](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html)」を参照してください。

1. SageMaker Notebook Jobs 用の JupyterLab 拡張機能を追加します。コマンド `pip install amazon_sagemaker_jupyter_scheduler` を使用して JupyterLab 環境に追加できます。コマンド `sudo systemctl restart jupyter-server` を使用して Jupyter サーバーを再起動する必要がある場合があります。

1. 次のコマンド `jupyter lab` を使用して JupyterLab を起動します。

1. Jupyter Notebook タスクバーに Notebook Jobs ウィジェット (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/icons/notebook-schedule.png)) が表示されていることを確認します。

# Studio のポリシーとアクセス許可を設定する
<a name="scheduled-notebook-policies-studio"></a>

最初のノートブックの実行をスケジュールする前に、適切なポリシーとアクセス許可をインストールする必要があります。以下は、次のアクセス許可を設定する手順を説明しています。
+ ジョブ実行ロールの信頼関係
+ ジョブ実行ロールにアタッチされた追加の IAM アクセス許可
+ (オプション) カスタム KMS キーを使用するための AWS KMS アクセス許可ポリシー

**重要**  
 AWS アカウントがサービスコントロールポリシー (SCP) が設定されている組織に属している場合、有効なアクセス許可は、SCPs によって許可されるものと IAM ロールとユーザーポリシーによって許可されるものの論理的な共通部分です。例えば、組織の SCP で、`us-east-1` と `us-west-1` のリソースのみにアクセスできると指定されており、ポリシーでは `us-west-1` と `us-west-2` のリソースのみにアクセスが許可されている場合、最終的には `us-west-1` のリソースにのみアクセスできます。ロールポリシーとユーザーポリシーで許可されているアクセス許可をすべて行使したい場合は、組織の SCP が独自の IAM ユーザーおよびロールポリシーと同じアクセス許可セットを付与する必要があります。許可されるリクエストを確認する方法の詳細については、「[Determining whether a request is allowed or denied within an account](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow)」を参照してください。

**信頼関係**

信頼関係を変更するには、次の手順を実行します。

1. [[IAM コンソール]](https://console.aws.amazon.com/iam/) を開きます。

1. 左側のパネルの **[ロール]** を選択します。

1. ノートブックジョブのジョブ実行ロールを検索し、ロール名を選択します。

1. **[信頼関係]** タブを選択します。

1. **[Edit trust policy]** (信頼ポリシーを編集) を選択します。

1. 以下のポリシーをコピーして、貼り付けます。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "sagemaker.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           },
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "events.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

1. [**[ポリシーの更新]** を選択します。

## 追加の IAM アクセス許可
<a name="scheduled-notebook-policies-add"></a>

以下の状況では、追加の IAM アクセス許可を含める必要がある場合がある
+ Studio の実行ロールとノートブックジョブのロールは異なる
+ S3 VPC エンドポイント経由で Amazon S3 リソースにアクセスする必要がある
+ カスタム KMS キーを使用して、入出力の Amazon S3 バケットを暗号化する必要がある

以下の説明では、それぞれのケースに必要なポリシーについて取り上げます。

### Studio の実行ロールとノートブックジョブのロールが異なる場合に必要なアクセス許可
<a name="scheduled-notebook-policies-add-diffrole"></a>

次の JSON スニペットは、Studio 実行ロールをノートブックジョブロールとして使用しない場合に Studio 実行ロールとノートブックジョブロールに追加する必要があるポリシーの例です。権限をさらに制限する必要がある場合は、このポリシーを確認して変更してください。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":"iam:PassRole",
         "Resource":"arn:aws:iam::*:role/*",
         "Condition":{
            "StringLike":{
               "iam:PassedToService":[
                  "sagemaker.amazonaws.com",
                  "events.amazonaws.com"
               ]
            }
         }
      },
      {
         "Effect":"Allow",
         "Action":[
            "events:TagResource",
            "events:DeleteRule",
            "events:PutTargets",
            "events:DescribeRule",
            "events:PutRule",
            "events:RemoveTargets",
            "events:DisableRule",
            "events:EnableRule"
         ],
         "Resource":"*",
         "Condition":{
            "StringEquals":{
               "aws:ResourceTag/sagemaker:is-scheduling-notebook-job":"true"
            }
         }
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:CreateBucket",
            "s3:PutBucketVersioning",
            "s3:PutEncryptionConfiguration"
         ],
         "Resource":"arn:aws:s3:::sagemaker-automated-execution-*"
      },
      {
            "Sid": "S3DriverAccess",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetObject",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::sagemakerheadlessexecution-*"
            ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "sagemaker:ListTags"
         ],
         "Resource":[
            "arn:aws:sagemaker:*:*:user-profile/*",
            "arn:aws:sagemaker:*:*:space/*",
            "arn:aws:sagemaker:*:*:training-job/*",
            "arn:aws:sagemaker:*:*:pipeline/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "sagemaker:AddTags"
         ],
         "Resource":[
            "arn:aws:sagemaker:*:*:training-job/*",
            "arn:aws:sagemaker:*:*:pipeline/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "ec2:DescribeDhcpOptions",
            "ec2:DescribeNetworkInterfaces",
            "ec2:DescribeRouteTables",
            "ec2:DescribeSecurityGroups",
            "ec2:DescribeSubnets",
            "ec2:DescribeVpcEndpoints",
            "ec2:DescribeVpcs",
            "ecr:BatchCheckLayerAvailability",
            "ecr:BatchGetImage",
            "ecr:GetDownloadUrlForLayer",
            "ecr:GetAuthorizationToken",
            "s3:ListBucket",
            "s3:GetBucketLocation",
            "s3:GetEncryptionConfiguration",
            "s3:PutObject",
            "s3:DeleteObject",
            "s3:GetObject",
            "sagemaker:DescribeApp",
            "sagemaker:DescribeDomain",
            "sagemaker:DescribeUserProfile",
            "sagemaker:DescribeSpace",
            "sagemaker:DescribeStudioLifecycleConfig",
            "sagemaker:DescribeImageVersion",
            "sagemaker:DescribeAppImageConfig",
            "sagemaker:CreateTrainingJob",
            "sagemaker:DescribeTrainingJob",
            "sagemaker:StopTrainingJob",
            "sagemaker:Search",
            "sagemaker:CreatePipeline",
            "sagemaker:DescribePipeline",
            "sagemaker:DeletePipeline",
            "sagemaker:StartPipelineExecution"
         ],
         "Resource":"*"
      }
   ]
}
```

------

### S3 VPC エンドポイント経由で Amazon S3 リソースにアクセスするのに必要なアクセス許可
<a name="scheduled-notebook-policies-add-vpc"></a>

SageMaker Studio をプライベート VPC モードで実行し、S3 VPC エンドポイントから S3 にアクセスする場合、VPC エンドポイントポリシーにアクセス許可を追加して、VPC エンドポイントからアクセス可能な S3 リソースを制御できます。以下のアクセス許可を VPC エンドポイントポリシーに追加します。アクセス許可をさらに制限する必要がある場合 (例えば、`Principal` フィールドの仕様を絞り込むなど)、ポリシーを変更できます。

```
{
    "Sid": "S3DriverAccess",
    "Effect": "Allow",
    "Principal": "*",
    "Action": [
        "s3:GetBucketLocation",
        "s3:GetObject",
        "s3:ListBucket"
    ],
    "Resource": "arn:aws:s3:::sagemakerheadlessexecution-*"
}
```

S3 VPC エンドポイントポリシーの設定方法の詳細については、「[Edit the VPC endpoint policy](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#edit-vpc-endpoint-policy-s3)」を参照してください。

### カスタム KMS キーを使用するために必要なアクセス許可 (オプション)
<a name="scheduled-notebook-policies-add-kms"></a>

デフォルトでは、入出力の Amazon S3 バケットはサーバー側の暗号化を使用して暗号化されますが、カスタム KMS キーを指定して、出力 Amazon S3 バケットとノートブックジョブにアタッチされたストレージボリュームのデータを暗号化できます。

カスタム KMS キーを使用する場合は、次のポリシーをアタッチし、独自の KMS キー ARN を指定します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
         "Effect":"Allow",
         "Action":[
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:GenerateDataKey*",
            "kms:DescribeKey",
            "kms:CreateGrant"
         ],
         "Resource":"arn:aws:kms:us-east-1:111122223333:key/key-id"
      }
   ]
}
```

------

# ローカル Jupyter 環境にポリシーとアクセス許可をインストールする
<a name="scheduled-notebook-policies-other"></a>

ローカル Jupyter 環境でノートブックジョブをスケジュールするには、必要なアクセス許可とポリシーを設定する必要があります。IAM ユーザーには SageMaker AI にジョブを送信するためのアクセス許可が必要であり、ノートブックジョブ自体が引き受ける IAM ロールにはジョブタスクに応じてリソースにアクセスするためのアクセス許可が必要です。以下では、必要なアクセス許可とポリシーを設定する方法について説明します。

2 セットのアクセス許可をインストールする必要があります。次の図は、ローカル Jupyter 環境でノートブックジョブをスケジュールするためのアクセス許可構造を説明しています。IAM ユーザーが SageMaker AI にジョブを送信するためには、IAM アクセス許可を設定する必要があります。ユーザーがノートブックジョブを送信すると、ノートブックジョブ自体が IAM ロールを引き受けます。このロールには、ジョブタスクに応じてリソースにアクセスするためのアクセス許可があります。

![\[\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/notebook-jobs-permissions.png)


以下のセクションでは、IAM ユーザーとジョブ実行ロールの両方に必要なポリシーとアクセス許可をインストールするのに役立ちます。

## IAM ユーザー許可
<a name="scheduled-notebook-policies-other-user"></a>

**SageMaker AI にジョブを送信するためのアクセス許可**

ジョブを送信する許可を追加するには、次の手順を実行します。

1. [[IAM コンソール]](https://console.aws.amazon.com/iam/) を開きます。

1. 左のパネルの **[ユーザー]** を選択します。

1. ノートブックジョブの IAM ユーザーを検索し、ユーザー名を選択します。

1. **[アクセス許可の追加]** と **[インラインポリシーを作成]** の順に選択します。

1. **JSON** タブを選択します。

1. 以下のポリシーをコピーして、貼り付けます。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "EventBridgeSchedule",
               "Effect": "Allow",
               "Action": [
                   "events:TagResource",
                   "events:DeleteRule",
                   "events:PutTargets",
                   "events:DescribeRule",
                   "events:EnableRule",
                   "events:PutRule",
                   "events:RemoveTargets",
                   "events:DisableRule"
               ],
               "Resource": "*",
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceTag/sagemaker:is-scheduling-notebook-job": "true"
                   }
               }
           },
           {
               "Sid": "IAMPassrole",
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": "arn:aws:iam::*:role/*",
               "Condition": {
                   "StringLike": {
                       "iam:PassedToService": [
                           "sagemaker.amazonaws.com",
                           "events.amazonaws.com"
                       ]
                   }
               }
           },
           {
               "Sid": "IAMListRoles",
               "Effect": "Allow",
               "Action": "iam:ListRoles",
               "Resource": "*"
           },
           {
               "Sid": "S3ArtifactsAccess",
               "Effect": "Allow",
               "Action": [
                   "s3:PutEncryptionConfiguration",
                   "s3:CreateBucket",
                   "s3:PutBucketVersioning",
                   "s3:ListBucket",
                   "s3:PutObject",
                   "s3:GetObject",
                   "s3:GetEncryptionConfiguration",
                   "s3:DeleteObject",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::sagemaker-automated-execution-*"
               ]
           },
           {
               "Sid": "S3DriverAccess",
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:GetObject",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::sagemakerheadlessexecution-*"
               ]
           },
           {
               "Sid": "SagemakerJobs",
               "Effect": "Allow",
               "Action": [
                   "sagemaker:DescribeTrainingJob",
                   "sagemaker:StopTrainingJob",
                   "sagemaker:DescribePipeline",
                   "sagemaker:CreateTrainingJob",
                   "sagemaker:DeletePipeline",
                   "sagemaker:CreatePipeline"
               ],
               "Resource": "*",
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceTag/sagemaker:is-scheduling-notebook-job": "true"
                   }
               }
           },
           {
               "Sid": "AllowSearch",
               "Effect": "Allow",
               "Action": "sagemaker:Search",
               "Resource": "*"
           },
           {
               "Sid": "SagemakerTags",
               "Effect": "Allow",
               "Action": [
                   "sagemaker:ListTags",
                   "sagemaker:AddTags"
               ],
               "Resource": [
                   "arn:aws:sagemaker:*:*:pipeline/*",
                   "arn:aws:sagemaker:*:*:space/*",
                   "arn:aws:sagemaker:*:*:training-job/*",
                   "arn:aws:sagemaker:*:*:user-profile/*"
               ]
           },
           {
               "Sid": "ECRImage",
               "Effect": "Allow",
               "Action": [
                   "ecr:GetAuthorizationToken",
                   "ecr:BatchGetImage"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

**AWS KMS アクセス許可ポリシー (オプション)**

デフォルトでは、入出力の Amazon S3 バケットはサーバー側の暗号化を使用して暗号化されますが、カスタム KMS キーを指定して、出力 Amazon S3 バケットとノートブックジョブにアタッチされたストレージボリュームのデータを暗号化できます。

カスタム KMS キーを使用する場合は、前の手順を繰り返し、次のポリシーをアタッチして独自の KMS キー ARN を指定します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
         "Effect":"Allow",
         "Action":[
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:GenerateDataKey*",
            "kms:DescribeKey",
            "kms:CreateGrant"
         ],
         "Resource":"arn:aws:kms:us-east-1:111122223333:key/key-id"
      }
   ]
}
```

------

## ジョブ実行ロールのアクセス許可
<a name="scheduled-notebook-policies-other-job"></a>

**信頼関係**

ジョブ実行ロールの信頼関係を変更するには、次の手順を実行します。

1. [[IAM コンソール]](https://console.aws.amazon.com/iam/) を開きます。

1. 左側のパネルの **[ロール]** を選択します。

1. ノートブックジョブのジョブ実行ロールを検索し、ロール名を選択します。

1. **[信頼関係]** タブを選択します。

1. **[Edit trust policy]** (信頼ポリシーを編集) を選択します。

1. 以下のポリシーをコピーして、貼り付けます。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": [
                       "sagemaker.amazonaws.com",
                       "events.amazonaws.com"
                   ]
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

**追加のアクセス許可**

送信されたノートブックジョブには、リソースにアクセスするためのアクセス許可が必要です。次の手順は、最小限のアクセス許可セットを追加する方法を示します。必要に応じて、ノートブックジョブのニーズに基づいてさらにアクセス許可を追加します。ジョブ実行ロールにアクセス許可を追加するには、次の手順を実行します。

1. [[IAM コンソール]](https://console.aws.amazon.com/iam/) を開きます。

1. 左側のパネルの **[ロール]** を選択します。

1. ノートブックジョブのジョブ実行ロールを検索し、ロール名を選択します。

1. **[アクセス許可の追加]** と **[インラインポリシーを作成]** の順に選択します。

1. **JSON** タブを選択します。

1. 以下のポリシーをコピーして、貼り付けます。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "PassroleForJobCreation",
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": "arn:aws:iam::*:role/*",
               "Condition": {
                   "StringLike": {
                       "iam:PassedToService": "sagemaker.amazonaws.com"
                   }
               }
           },
           {
               "Sid": "S3ForStoringArtifacts",
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject",
                   "s3:GetObject",
                   "s3:ListBucket",
                   "s3:GetBucketLocation"
               ],
               "Resource": "arn:aws:s3:::sagemaker-automated-execution-*"
           },
           {
               "Sid": "S3DriverAccess",
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:GetObject",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::sagemakerheadlessexecution-*"
               ]
           },
           {
               "Sid": "SagemakerJobs",
               "Effect": "Allow",
               "Action": [
                   "sagemaker:StartPipelineExecution",
                   "sagemaker:CreateTrainingJob"
               ],
               "Resource": "*"
           },
           {
               "Sid": "ECRImage",
               "Effect": "Allow",
               "Action": [
                   "ecr:GetDownloadUrlForLayer",
                   "ecr:BatchGetImage",
                   "ecr:GetAuthorizationToken",
                   "ecr:BatchCheckLayerAvailability"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. ノートブックジョブがアクセスする他のリソースにアクセス許可を追加します。

1. **[ポリシーの確認]** を選択します。

1. ポリシーの名前を入力します。

1. [**Create policy**] (ポリシーの作成) を選択します。