

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

# 安裝指南
<a name="scheduled-notebook-installation"></a>

以下提供在 JupyterLab 環境中使用筆記本任務所需安裝內容的相關資訊。

**對於 Amazon SageMaker Studio 和 Amazon SageMaker Studio Lab**

如果您的筆記本位於 Amazon SageMaker Studio 或 Amazon SageMaker Studio Lab 中，則無需執行其他安裝 - SageMaker 筆記本工作內建於之內。若要為 Studio 設定必要的許可，請參閱[設定 Studio 的政策和許可](scheduled-notebook-policies-studio.md)。

**適用於本機 Jupyter 筆記本**

如果您想要在本機的 JupyterLab 環境中使用 SageMaker 筆記本工作，則您需要執行其他安裝。

若要安裝 SageMaker 筆記本工作，請完成下列步驟：

1. 安裝 Python 3。如需詳細資訊，請參閱[安裝 Python 3 和 Python 套件](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](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。

1. 安裝兩組許可。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. (選用) 依預設，排程器延伸模組會使用預先建置的 SageMaker AI Docker 映像檔搭配 Python 2.0。筆記本中使用的任何非預設核心都應該安裝在容器中。如果要在容器或 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 筆記本工作新增 JupyterLab 擴充功能。您可以使用以下指令將其新增至您的 JupyterLab 環境：`pip install amazon_sagemaker_jupyter_scheduler`。您可能需要使用以下命令重新啟動 Jupyter 伺服器：`sudo systemctl restart jupyter-server`。

1. 使用以下指令啟動 JupyterLab：`jupyter lab`。

1. 驗證筆記本工作小工具 (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/icons/notebook-schedule.png)) 在 Jupyter 筆記本工作列中顯示。

# 設定 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 使用者和角色政策相同的一組許可。如需與如何判斷請求是否得到允許相關的詳細資訊，請參閱[確定帳戶內是否允許或拒絕請求](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. 選擇**編輯信任政策**。

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，並透過 S3 VPC 私人雲端端點存取 S3，則可以向 VPC 端點政策新增許可，以控制哪些 S3 資源可透過 VPC 端點存取。將下列許可新增至您的 VPC 端點政策。如果您需要進一步限制許可，可以修改政策，例如，您可以為 `Principal` 欄位提供更狹窄的規格。

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

如需有關如何設定 S3 VPC 端點政策的詳細資訊，請參閱[編輯 VPC 端點政策](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 角色需要存取資源的許可，取決於工作任務。以下將提供如何設定必要許可和政策的指示。

您需要安裝兩組許可。下圖顯示您在本機 Jupyter 環境中排程筆記本任務的許可結構。IAM 使用者需要設定 IAM 許可，才能將任務提交至 SageMaker AI。使用者提交筆記本工作後，工作本身就會承擔 IAM 角色，根據工作任務的不同，該角色會擁有存取資源的許可。

![\[\]](http://docs.aws.amazon.com/zh_tw/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. 選擇**編輯信任政策**。

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. 選擇**建立政策**。