

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

# AWS Glue 互動式工作階段入門
<a name="interactive-sessions"></a>

這些章節說明如何執行 AWS Glue 本機互動式工作階段。

## 在本機設定互動式工作階段的先決條件
<a name="glue-is-prereqs"></a>

下列是安裝互動式工作階段的先決條件：
+ 支援的 Python 版本為 3.6 至 3.10 以上版本。
+  請參閱以下章節來取得 MacOS/Linux 和 Windows 的相關指示。
+  檢閱[互動式工作階段定價](https://docs.aws.amazon.com/glue/latest/dg/interactive-sessions-session-pricing.html)文件以了解成本結構。

## 安裝 Jupyter 和 AWS Glue 互動式工作階段 Jupyter 核心
<a name="interactive-sessions-install"></a>

 使用以下命令在本機安裝核心。

 `install-glue-kernels` 命令會同時為 Pyspark 和 Spark 核心安裝 jupyter kernelspec，並在正確的目錄中安裝標誌。

```
pip3 install --upgrade jupyter boto3 aws-glue-sessions
```

```
install-glue-kernels
```

## 執行 Jupyter
<a name="w2aac29c13c13"></a>

 若要執行 Jupyter 筆記本，請完成以下步驟。

1.  執行下列命令以啟動 Jupyter 筆記本。

   ```
   jupyter notebook
   ```

1.  選擇 **New** (新增)，然後選擇其中一個 AWS Glue 核心以開始針對 AWS Glue 編碼。

## 設定工作階段憑證和區域
<a name="interactive-sessions-credentials"></a>

### MacOS/Linux 指示
<a name="interactive-sessions-macos-linux-instructions"></a>

 AWS Glue 互動式工作階段需要與 AWS Glue 任務和開發端點相同的 IAM 許可。使用下列兩種方式之一指定與互動式工作階段搭配使用的角色：

1.  使用 `%iam_role` 和 `%region` 魔術命令 

1.  使用 `~/.aws/config` 中額外的行 

 **使用魔術命令設定工作階段角色** 

 在第一個儲存格中，在執行的第一個儲存格中鍵入 `%iam_role <YourGlueServiceRole>`。

 **Configuring a session role with `~/.aws/config`** (使用 設定工作階段角色) 

 AWS Glue 互動式工作階段的服務角色可以在筆記本本身中指定，或與 AWS CLI 組態一起存放。如果您有一個通常與 AWS Glue 任務一起使用的角色，那麼這就是該角色。如果您沒有用於 AWS Glue 任務的角色，請遵循本指南：《[設定用於 AWS Glue 的 IAM 許可](https://docs.aws.amazon.com/glue/latest/dg/configure-iam-for-glue.html)》來進行設定。

 若要將此角色設定為互動式工作階段的預設角色：

1.  在文字編輯器中開啟 `~/.aws/config`。

1.  尋找您用於 AWS Glue 的設定檔。如果您不使用設定檔，請使用 `[Default]` 設定檔。

1.  在設定檔中為您打算使用的角色新增一行，如 `glue_role_arn=<AWSGlueServiceRole>`。

1.  [選用]：如果您的設定檔沒有設定預設區域，建議使用 `region=us-east-1` 新增一個區域，將 `us-east-1` 替換為您所需的區域。

1.  儲存組態。

 如需詳細資訊，請參閱[具備 IAM 的互動式工作階段](glue-is-security.md)。

### Windows 指示
<a name="interactive-sessions-windows-instructions"></a>

 AWS Glue 互動式工作階段需要與 AWS Glue 任務和開發端點相同的 IAM 許可。使用下列兩種方式之一指定與互動式工作階段搭配使用的角色：

1.  使用 `%iam_role` 和 `%region` 魔術命令 

1.  使用 `~/.aws/config` 中額外的行 

 **使用魔術命令設定工作階段角色** 

 在第一個儲存格中，在執行的第一個儲存格中鍵入 `%iam_role <YourGlueServiceRole>`。

 **使用 `~/.aws/config` 設定工作階段角色** 

 AWS Glue 互動式工作階段的服務角色可以在筆記本本身中指定，或與 AWS CLI 組態一起存放。如果您有一個通常與 AWS Glue 任務一起使用的角色，那麼這就是該角色。如果您沒有用於 AWS Glue 任務的角色，請遵循本指南：[設定用於 AWS Glue 的 IAM 許可](https://docs.aws.amazon.com/glue/latest/dg/configure-iam-for-glue.html)，來進行設定。

 若要將此角色設定為互動式工作階段的預設角色：

1.  在文字編輯器中開啟 `~/.aws/config`。

1.  尋找您用於 AWS Glue 的設定檔。如果您不使用設定檔，請使用 `[Default]` 設定檔。

1.  在設定檔中為您打算使用的角色新增一行，如 `glue_role_arn=<AWSGlueServiceRole>`。

1.  [選用]：如果您的設定檔沒有設定預設區域，建議使用 `region=us-east-1` 新增一個區域，將 `us-east-1` 替換為您所需的區域。

1.  儲存組態。

 如需詳細資訊，請參閱[具備 IAM 的互動式工作階段](glue-is-security.md)。

## 從互動式工作階段預覽版升級
<a name="interactive-sessions-upgrading-from-preview"></a>

 在 0.27 版本發佈時，核心已升級並擁有新名稱。若要清理核心的預覽版本，請從終端機或 PowerShell 執行以下命令。

**注意**  
如果您的核心是需要自訂服務模型的任何其他 AWS Glue 預覽版的一部分，移除核心會移除自訂服務模型。

```
# Remove Old Glue Kernels
jupyter kernelspec remove glue_python_kernel
jupyter kernelspec remove glue_scala_kernel

# Remove Custom Model
cd ~/.aws/models
rm -rf glue/
```

# 將互動式工作階段與 SageMaker AI Studio 搭配使用
<a name="interactive-sessions-sagemaker-studio"></a>

 AWS Glue 互動式工作階段是一種隨需、無伺服器、Apache Spark 執行期環境，資料科學家和工程師可用來快速建置、測試和執行資料準備和分析應用程式。您可以啟動 Amazon SageMaker AI Studio Classic 筆記本來啟動 AWS Glue 互動式工作階段。

如需詳細資訊，請參閱[使用 AWS Glue 互動式工作階段來準備資料](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-notebooks-glue.html)。

# 將互動式工作階段與 Microsoft Visual Studio Code 搭配使用
<a name="interactive-sessions-vscode"></a>

 **先決條件** 
+  安裝 AWS Glue 互動式工作階段，並確認它能搭配 Jupyter 筆記本運作。
+  使用 Jupyter 下載並安裝與 Visual Studio Code。如需詳細資訊，請參閱 [VS Code 中的 Jupyter 筆記本](https://code.visualstudio.com/docs/datascience/jupyter-notebooks)。

**開始使用 VSCode 的互動式工作階段**

1.  在 VSCode 中停用 Jupyter 自動啟動。

    在 Visual Studio Code 中，Jupyter 核心會自動啟動，這會阻止魔術命令生效，因為工作階段已經開始。若要在 Windows 上停用**自動啟動**，請前往**檔案** > **偏好設定** > **延伸模組** > **Jupyter** > 用滑鼠右鍵按一下 Jupyter，然後選擇**延伸模組設定**。

    在 MacOS 上，前往**程式碼** > **設定** > **延伸模組** > **Jupyter** > 用滑鼠右鍵按一下 Jupyter，然後選擇**延伸模組設定**。

    向下捲動，直到顯示 **Jupyter：停用 Jupyter 自動啟動**。勾選標示為「如果為 true，將停用 Jupyter 自動啟動。您必須改為執行儲存格來啟動 Jupyter。」的核取方塊。  
![\[螢幕擷取畫面顯示了 VS Code 中為 Jupyter 擴充功能啟用的核取方塊。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/IS_vscode_step1.png)

1.  前往 File (檔案) > New File (新建檔案) > Save (儲存)，以您選擇的名稱將此檔案儲存為 `.ipynb` 副檔名或在 **Select a language** (選取一種語言) 下選取 **Jupyter** 並儲存檔案。  
![\[螢幕擷取畫面會顯示使用新名稱儲存的檔案。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/IS_vscode_step2.gif)

1.  按兩下該檔案。會顯示出 Jupyter shell，並打開一個筆記本。  
![\[螢幕擷取畫面會顯示打開的筆記本。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/IS_vscode_step3.png)

1.  當您在 Windows 上首次建立檔案時，依預設不會選取核心。按一下 **Select Kernel** (選取核心)，即可顯示出可用的核心清單。選擇 **Glue PySpark**。

    若您未在 MacOS 上看到 **Glue PySpark** 核心，請嘗試執行以下步驟：

   1. 執行本機 Jupyter 工作階段以取得 URL。

      例如，執行下列命令以啟動 Jupyter 筆記本。

      ```
      jupyter notebook
      ```

      當筆記本第一次執行時，您會看到類似 `http://localhost:8888/?token=3398XXXXXXXXXXXXXXXX` 的 URL。

      複製 URL。

   1. 在 VS Code 中，按一下目前的核心，然後**選取另一個核心…**，接著再選取**現有的 Jupyter 伺服器…**。貼上您從上述步驟複製的 URL。

      若顯示錯誤訊息，請參閱 [VS Code Jupyter Wiki](https://github.com/microsoft/vscode-jupyter/wiki/Connecting-to-a-remote-Jupyter-server-from-vscode.dev)。

   1. 若執行成功，則會將核心設定為 **Glue PySpark**。  
![\[螢幕擷取畫面會顯示反白的 Select Kernel (選取核心) 按鈕。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/IS_vscode_step4a.png)

    選擇 **Glue PySpark** 或 **Glue Spark** 核心 (分別用於 Python 和 Scala)。  
![\[螢幕擷取畫面會顯示 AWS Glue PySpark 的選擇\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/IS_vscode_step4b.png)

    如果您在下拉式清單中未看到 **AWS Glue PySpark** 和 **AWS Glue Spark** 核心，請確認您在上述步驟中已安裝 AWS Glue 核心，或 Visual Studio Code 中的 `python.defaultInterpreterPath` 設定正確。如需詳細資訊，請參閱 [python.defaultInterpreterPath 設定說明](https://github.com/microsoft/vscode-python/wiki/Setting-descriptions#pythondefaultinterpreterpath)。

1.  建立 AWS Glue 互動式工作階段。依照您在 Jupyter 筆記本中所做的相同方式繼續建立工作階段。在第一個儲存格頂部指定任何魔術命令，然後執行程式碼語句。

# 具備 IAM 的互動式工作階段
<a name="glue-is-security"></a>

 下列章節說明適用於 AWS Glue 互動式工作階段的安全考量。

**Topics**
+ [

## 與互動式工作階段搭配使用的 IAM 主體
](#glue-is-security-iam-principals)
+ [

## 設定用戶端主體
](#glue-is-client-principals)
+ [

## 設定執行時間角色
](#glue-is-runtime-role)
+ [

## 使用 TagOnCreate 將工作階段設定為私有
](#glue-is-tagoncreate)
+ [

## IAM 政策考量
](#glue-is-security-iam-managed-policy)

## 與互動式工作階段搭配使用的 IAM 主體
<a name="glue-is-security-iam-principals"></a>

 您會使用兩個與 AWS Glue 互動式工作階段搭配使用的 IAM 主體。
+  **Client principal** (用戶端主體)：用戶端主體 (使用者或角色) 會授權 AWS Glue 用戶端互動式工作階段的 API 操作，用戶端使用主體的身分識別型憑證進行設定。例如，這可能是您通常用來存取 AWS Glue 主控台的 IAM 角色。這也可能是提供給 IAM 中登入資料用於 的使用者的角色 AWS Command Line Interface，或互動式工作階段 Jupyter 核心所使用的AWS Glue用戶端。
+  **執行時間角色**：執行時間角色是用戶端主體傳遞給互動式工作階段 API 操作的 IAM 角色。AWS Glue 會使用此角色在工作階段中執行陳述式。例如，此角色可能是用來執行 AWS Glue ETL 任務的角色。

   如需詳細資訊，請參閱[設定執行時間角色](#glue-is-runtime-role)。

## 設定用戶端主體
<a name="glue-is-client-principals"></a>

 您必須將身分政策連接至用戶端主體，以允許其呼叫互動式工作階段 API。此角色必須擁有對您傳遞至如 `CreateSession` 等互動式工作階段 API 之執行角色的 `iam:PassRole` 存取權。例如，您可以將 **AWSGlueConsoleFullAccess** 受管政策連接到 IAM 角色，這會允許您帳戶中連接政策的使用者存取您帳戶中建立的所有工作階段 (例如執行時間陳述式或取消陳述式)。

 如果您想要保護您的工作階段並使其僅對某些 IAM 角色私有，例如與建立工作階段的使用者關聯的 IAM 角色，那麼您可以使用 AWS Glue 互動式工作階段的以標籤為基礎的授權控制 (稱為 TagOnCreate)。如需詳細資訊，請參閱[使用 TagOnCreate 將工作階段設定為私有](#glue-is-tagoncreate)，瞭解以 owner 標籤為基礎的範圍縮減受管政策如何使用 TagOnCreate 將您的工作階段設定為私有。如需有關以身分為基礎的政策詳細資訊，請參閱 [AWS Glue 以身分為基礎的政策](https://docs.aws.amazon.com/glue/latest/dg/security_iam_service-with-iam.html#security_iam_service-with-iam-id-based-policies)。

## 設定執行時間角色
<a name="glue-is-runtime-role"></a>

 您必須將 IAM 角色傳遞給 CreateSession API 操作，才能允許 AWS Glue 在互動式工作階段中承接和執行陳述式。角色應該擁有執行一般 AWS Glue 任務所需的相同 IAM 許可。例如，您可以使用允許 代表您AWS Glue呼叫 服務的 **AWSGlueServiceRole** 政策來建立 AWS 服務角色。如果您使用 AWS Glue 主控台，它會代為自動建立服務角色，或使用現有的服務角色。您也可以建立自己的 IAM 角色，並連接自己的 IAM 政策，以允許類似的許可。

 如果您想要保護您的工作階段並使其僅對建立工作階段的使用者私有，那麼您可以使用 AWS Glue 互動式工作階段的以標籤為基礎的授權控制 (稱為 TagOnCreate)。如需詳細資訊，請參閱[使用 TagOnCreate 將工作階段設定為私有](#glue-is-tagoncreate)，瞭解以 owner 標籤為基礎的範圍縮減受管政策如何使用 TagOnCreate 將您的工作階段設定為私有。如需有關以身分為基礎的政策詳細資訊，請參閱 [Glue AWS 的身分型政策](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies)。如果您自己從 IAM 主控台建立執行角色，並且希望使用 TagOnCreate 特徵將您的服務設定為私有，請按照以下步驟操作。

1.  建立 IAM 角色並將角色類型設定為 `Glue`。

1.  連接此 AWS Glue 受管政策：*AwsGlueSessionUserRestrictedServiceRole* 

1.  在角色名稱前加上政策名稱 *AwsGlueSessionUserRestrictedServiceRole*。例如，您可以建立名為 *AwsGlueSessionUserRestrictedServiceRole-myrole* 的角色並連接 AWS Glue 受管政策 *AwsGlueSessionUserRestrictedServiceRole*。

1.  連接類似下列項目的信任政策，以允許 AWS Glue 擔任此角色：

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

****  

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

------

 對於互動式工作階段 Jupyter 核心，您可以在 AWS Command Line Interface 設定檔中指定`iam_role`金鑰。如需詳細資訊，請參閱[使用 \$1/.aws/config 設定工作階段](https://docs.aws.amazon.com/glue/latest/ug/interactive-sessions-magics.html#interactive-sessions-named-profiles)。如果您是使用 AWS Glue 筆記本與互動式工作階段進行互動，則您可以在您執行之第一個儲存格中的 `%iam_role` 魔術命令中傳遞執行角色。

## 使用 TagOnCreate 將工作階段設定為私有
<a name="glue-is-tagoncreate"></a>

 AWS Glue 互動式工作階段支援對互動式工作階段進行標記和以標籤為基礎的授權 (TBAC) 作為命名資源。除了使用 TagResource 和 UntagResource API 的 TBAC 之外，AWS Glue 互動式工作階段支援 TagOnCreate 特徵，以便僅在使用 CreateSession 操作建立工作階段期間使用給定標籤「標記」工作階段。這也意味著這些標籤將在 DeleteSession 中移除，也就是 UntagOnDelete。

 TagOnCreate 提供了一種強大的安全機制，將工作階段設定為工作階段建立者私有。例如，您可以將具有 RequestTag "owner" 和值 \$1\$1aws:userId\$1 的 IAM 政策連接至用戶端主體 (例如使用者)，以便只有在具有呼叫者 userId 相符值的 "owner" 標籤在 CreateSession 請求中提供為 userId 標籤時才允許建立工作階段。此政策允許 AWS Glue 互動式工作階段建立工作階段資源，並僅在工作階段建立期間使用 userId 標籤標記工作階段。除此之外，您還可以透過將具有 ResourceTag "owner" 的 IAM 政策連接至您在 CreateSession 期間傳遞的執行角色，將對工作階段的存取 (如執行陳述句) 權限僅限於工作階段的建立者 (即具有值 \$1\$1aws:userId\$1 的擁有者標籤)。

 為了使您更容易使用 TagOnCreate 特徵將工作階段設定為工作階段建立者私有，AWS Glue 提供專用的受管政策和服務角色。

 如果您想要使用 IAM AssumeRole 主體 (即使用擔任 IAM 角色提供的憑證) 建立 AWS Glue 互動式工作階段，並且您想要將工作階段設定為建立者私有，然後分別使用類似於 **AWSGlueSessionUserRestrictedNotebookPolicy** 和 **AWSGlueSessionUserRestrictedNotebookServiceRole** 的政策。這些政策允許 AWS Glue 使用 \$1\$1aws:PrincipalTag\$1 來擷取 owner 標籤值。這需要您在擔任角色憑證中將值為 \$1\$1aws:userId\$1 的 userId 標籤作為 SessionTag 傳遞。請參閱 [ID 工作階段標籤](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html)。如果您使用的是帶有販售憑證的執行個體設定檔的 Amazon EC2 執行個體，並且您想要在 Amazon EC2 執行個體中建立工作階段或與工作階段互動，則需要在擔任角色憑證中將值為 \$1\$1aws:userId\$1 的 userId 標籤作為 SessionTag 傳遞。

 例如，如果您正使用 IAM AssumeRole 主體憑證建立工作階段，並且希望使用 TagOnCreate 特徵將您的服務設定為私有服務，請按照以下步驟操作。

1.  從 IAM 主控台自行建立執行時間角色。請連接此 AWS Glue 受管政策 *AwsGlueSessionUserRestrictedNotebookServiceRole* 並在角色名稱前加上政策名稱 *AwsGlueSessionUserRestrictedNotebookServiceRole*。例如，您可以建立名為 *AwsGlueSessionUserRestrictedNotebookServiceRole-myrole* 的角色並連接 AWS Glue 受管政策 *AwsGlueSessionUserRestrictedNotebookServiceRole*。

1.  連接類似下方的信任政策，以允許 AWS Glue 來擔任上述角色。

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

****  

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

------

1.  建立另一個使用字首 *AwsGlueSessionUserRestrictedNotebookPolicy* 命名的角色，並連接 AWS Glue 受管政策 *AwsGlueSessionUserRestrictedNotebookPolicy* 以使工作階段私有。除了受管政策之外，請連接以下內嵌政策，以允許 iam:PassRole 連接至您在步驟 1 中建立的角色。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "iam:PassRole"
         ],
         "Resource": [
           "arn:aws:iam::*:role/AwsGlueSessionUserRestrictedNotebookServiceRole*"
         ],
         "Condition": {
           "StringLike": {
             "iam:PassedToService": [
               "glue.amazonaws.com"
             ]
           }
         }
       }
     ]
   }
   ```

------

1.  將類似下列的信任政策連接到上述 IAM AWS Glue，以擔任此角色。

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

****  

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

------
**注意**  
 (選用) 您可以使用單一角色 (例如筆記本角色) 並連接上述兩個受管政策 *AwsGlueSessionUserRestrictedNotebookServiceRole* 和 *AwsGlueSessionUserRestrictedNotebookPolicy*。也請連接額外的內嵌政策，以允許您角色的 `iam:passrole` 連接至 AWS Glue。最後連接上述信任政策，以允許 `sts:AssumeRole` 和 `sts:TagSession`。

### AWSGlueSessionUserRestrictedNotebookPolicy
<a name="w2aac29c13c33c21c15"></a>

 AWSGlueSessionUserRestrictedNotebookPolicy 僅在標籤索引鍵「擁有者」和值符合委託人 （使用者或角色） AWS 的使用者 ID 時，才提供從筆記本建立AWS Glue互動式工作階段的存取權。如需詳細資訊，請參閱[您可以在何處使用政策變數](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html#policy-vars-infotouse)。此政策會連接至 AWS Glue Studio 中建立 AWS Glue 互動式工作階段筆記本的主體 (使用者或角色)。此政策也允許足夠存取AWS Glue Studio筆記本，以與使用符合委託人 AWS 使用者 ID 的「擁有者」標籤值所建立的AWS Glue Studio互動式工作階段資源互動。工作階段建立之後，此政策會拒絕對變更或移除 AWS Glue 工作階段資源中 "owner" 標籤的許可。

### AWSGlueSessionUserRestrictedNotebookServiceRole
<a name="w2aac29c13c33c21c17"></a>

 **AWSGlueSessionUserRestrictedNotebookServiceRole** 提供足夠的筆記本存取權，以便與使用與AWS Glue Studio筆記本建立者主體 （使用者或角色） AWS 的使用者 ID 相符的「擁有者」標籤值所建立的AWS Glue互動式工作階段資源互動。如需詳細資訊，請參閱[您可以在何處使用政策變數](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html#policy-vars-infotouse)。此服務角色政策會連接至作為魔術命令傳遞給筆記本或作為執行角色傳遞給 CreateSession API 的角色。只有在標籤索引鍵「擁有者」和值符合委託人 AWS 的使用者 ID 時，此政策也允許從筆記本建立AWS Glue互動式工作階段。工作階段建立之後，此政策會拒絕對變更或移除 AWS Glue 工作階段資源中 "owner" 標籤的許可。此政策還包括從 Amazon S3 儲存貯體寫入和讀取、寫入 CloudWatch 日誌、為 AWS Glue 使用的 Amazon EC2 資源建立和刪除標籤的許可。

### 透過使用者政策將工作階段設定為私有
<a name="w2aac29c13c33c21c21"></a>

您可以將 **AWSGlueSessionUserRestrictedPolicy** 連接至您帳戶中每個使用者連接的 IAM 角色，以限制他們僅能使用值與其專屬 \$1\$1aws:userId\$1 相符的擁有者標籤建立工作階段。不會使用 **AWSGlueSessionUserRestrictedNotebookPolicy** 和 **AWSGlueSessionUserRestrictedNotebookServiceRole**。您需要分別使用與 **AWSGlueSessionUserRestrictedPolicy** 和 **AWSGlueSessionUserRestrictedServiceRole** 類似的政策。如需詳細資訊，請參閱[使用以身分為基礎的政策](https://docs.aws.amazon.com/glue/latest/dg/using-identity-based-policies.html)。此政策將對工作階段的存取權縮小到僅限建立者，亦即使用具有專屬 \$1\$1aws:userId\$1 之擁有者標籤建立工作階段的使用者 \$1\$1aws:userId\$1。如果您已按照[設定執行時間角色](#glue-is-runtime-role)中的步驟使用 IAM 主控台自行建立執行角色，則除了連接 **AwsGlueSessionUserRestrictedPolicy** 受管政策外，還要將以下內嵌政策連接至帳戶中的每個使用者，以允許 `iam:PassRole` 用於您先前建立的執行角色。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::*:role/AwsGlueSessionUserRestrictedServiceRole*"
      ],
      "Condition": {
        "StringLike": {
          "iam:PassedToService": [
            "glue.amazonaws.com"
          ]
        }
      }
    }
  ]
}
```

------

#### AWSGlueSessionUserRestrictedPolicy
<a name="w2aac29c13c33c21c21c11"></a>

 **AWSGlueSessionUserRestrictedPolicy** 僅在提供符合其 AWS 使用者 ID 的標籤金鑰「擁有者」和值時，才提供使用 CreateSession API 建立AWS Glue互動式工作階段的存取權。此身分政策連接至叫用 CreateSession API 的使用者。此政策也允許 與使用符合其 AWS 使用者 ID 的「擁有者」標籤和值建立的AWS Glue互動式工作階段資源互動。工作階段建立之後，此政策會拒絕對變更或移除 AWS Glue 工作階段資源中 "owner" 標籤的許可。

#### AWSGlueSessionUserRestrictedServiceRole
<a name="w2aac29c13c33c21c21c13"></a>

 **AWSGlueSessionUserRestrictedServiceRole** 提供所有 AWS Glue 資源的完整存取權 (工作階段除外)，並允許使用者僅建立並使用與使用者相關聯的互動式工作階段。此政策也包含 在其他 AWS 服務中AWS Glue管理 Glue 資源所需的其他許可。此政策也允許將標籤新增至其他服務中的AWS Glue資源 AWS 。

## IAM 政策考量
<a name="glue-is-security-iam-managed-policy"></a>

 互動式工作階段是 AWS Glue 中的 IAM 資源。由於其是 IAM 資源，因此對工作階段的存取和互動受 IAM 政策管控。根據連接至用戶端主體或管理員設定之執行角色的 IAM 政策，用戶端主體 (使用者或角色) 可以建立新的工作階段，並與其本身的工作階段和其他工作階段進行互動。

 如果管理員已連接 IAM 政策，例如 AWSGlueConsoleFullAccess 或 AWSGlueServiceRole，該政策允許存取該帳戶中的所有 AWS Glue 資源，則用戶端主體可以彼此協作。例如，如果政策允許，一位使用者可以與其他使用者建立的工作階段進行互動。

 如果您想根據您的特定需求設定政策，請參閱[有關設定政策資源的 IAM 說明文件](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html)。例如，為了隔離屬於使用者的工作階段，您可以使用 AWS Glue 互動式工作階段支援的 TagOnCreate 功能。請參閱 [使用 TagOnCreate 將工作階段設定為私有](#glue-is-tagoncreate)。

 互動式工作階段支援根據特定 VPC 條件限制建立工作階段。請參閱[控制使用條件索引鍵來控制設定的政策](security_iam_id-based-policy-examples.md#glue-identity-based-policy-condition-key-vpc)。