

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 开始使用 AWS Glue 交互式会话
<a name="getting-started-glue-sm"></a>

在本指南中，您将学习如何在 SageMaker AI Studio Classic 中启动 AWS Glue 交互式会话，以及如何使用 Jupyter 魔法管理您的环境。

## Studio 或 Studio 经典版中 AWS Glue 交互式会话
<a name="glue-sm-iam"></a>

本节列出了在 Studio 或 Studio Classic 中运行 AWS Glue 交互式会话所需的策略，并说明了如何设置这些策略。具体而言，它详细介绍了如何：
+ 将`AwsGlueSessionUserRestrictedServiceRole`托管策略附加到您的 SageMaker AI 执行角色。
+ 为您的 SageMaker AI 执行角色创建内联自定义策略。
+ 修改您的 SageMaker AI 执行角色的信任关系。

**将 `AwsGlueSessionUserRestrictedServiceRole` 托管策略附加到执行角色**

1. 打开 [IAM 控制台](https://console.aws.amazon.com/iam/)。

1. 在左侧面板中选择**角色**。

1. 查找用户配置文件中使用的 Studio Classic 执行角色。有关如何查看用户配置文件的信息，请参阅 [查看域中的用户配置文件](domain-user-profile-view.md)。

1. 选择角色名称，进入角色摘要页面。

1. 在**权限**选项卡下，从**添加权限**下拉菜单中选择**附加策略**。

1. 选中托管策略 `AwsGlueSessionUserRestrictedServiceRole` 旁的复选框。

1. 选择**附加策略**。

   摘要页面显示您新添加的托管策略。

   

**在执行角色上创建内联自定义策略**

1. 在**添加权限**下拉菜单中选择**创建内联策略**。

1. 选择 **JSON** 选项卡。

1. 复制并粘贴以下策略。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "uniqueStatementId",
   
               "Effect": "Allow",
               "Action": [
   	     "iam:GetRole",
                   "iam:PassRole",
                   "sts:GetCallerIdentity"
               ],
               "Resource": "arn:aws:iam::*:role/GlueServiceRole*"
           }
       ]
   }
   ```

------

1. 选择**查看策略**。

1. 输入**名称**，然后选择**创建策略**。

   摘要页面显示您新添加的自定义策略。

   

**修改该执行角色的信任关系**

1. 选择**信任关系**选项卡。

1. 选择**编辑信任策略**。

1. 复制并粘贴以下策略。

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

****  

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

------

1. 选择**更新策略**。

如果您需要访问其他 AWS 资源，可以添加其他角色和策略。有关您可以包括的其他角色和策略的描述，请参阅 AWS Glue 文档中的[与 IAM 的交互式会话](https://docs.aws.amazon.com/glue/latest/dg/glue-is-security.html)。

## 标签传播
<a name="glue-sm-tag-propagation"></a>

标签通常用于跟踪和分配成本、控制会话访问权限、隔离资源等。要了解如何使用标签向 AWS 资源添加元数据，或者有关常见使用场景的详细信息，请参阅[附加信息](#more-information)。

您可以启用 AWS 标签自动传播到从 Studio 或 Studio Classic 用户界面中创建的新 AWS Glue 交互式会话。从 Studio 或 Studio Classic 创建 AWS Glue 交互式会话时，附加到用户配置文件或共享空间的任何用户[定义标签](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/custom-tags.html)都将转移到新的 AWS Glue 交互式会话中。此外，Studio 和 Studio Classic 会自动将两个 AWS生成的内部标签（（`sagemaker:user-profile-arn`和`sagemaker:domain-arn`）或（`sagemaker:shared-space-arn`和`sagemaker:domain-arn`））添加到通过其用户界面创建的新 AWS Glue 交互式会话中。您可以使用这些标签汇总各个域、用户配置文件或空间的成本。

### 启用标签传播
<a name="enable-propagation"></a>

要启用标签自动传播到新的 AWS Glue 交互式会话，请为您的 A SageMaker I 执行角色和与您的会 AWS Glue 话关联的 IAM 角色设置以下权限：

**注意**  
默认情况下，与 AWS Glue 交互式会话关联的角色与 SageMaker AI 执行角色相同。您可以使用 m `%iam_role` agic 命令为 AWS Glue 交互式会话指定不同的执行角色。有关可用于配置 AWS Glue 交互式会话的 Jupyter magic 命令的信息，请参阅[在 Studio 或 Studio 经典版中配置 AWS Glue 互动会话](#glue-sm-magics)。
+ *在你的 SageMaker AI 执行角色上*：创建新的内联策略，然后粘贴以下 JSON 文件。该策略授予执行角色描述（`DescribeUserProfile`、`DescribeSpace`、`DescribeDomain`）和列出在用户个人资料、共享空间和 SageMaker AI 域上设置的标签 (`ListTag`) 的权限。

  ```
  {
      "Effect": "Allow",
      "Action": [
          "sagemaker:ListTags"
      ],
      "Resource": [
          "arn:aws:sagemaker:*:*:user-profile/*",
          "arn:aws:sagemaker:*:*:space/*"
      ]
  },
  {
      "Effect": "Allow",
      "Action": [
          "sagemaker:DescribeUserProfile"
      ],
      "Resource": [
          "arn:aws:sagemaker:*:*:user-profile/*"
      ]
  },
  {
      "Effect": "Allow",
      "Action": [
          "sagemaker:DescribeSpace"
      ],
      "Resource": [
          "arn:aws:sagemaker:*:*:space/*"
      ]
  }
  {
      "Effect": "Allow",
      "Action": [
          "sagemaker:DescribeDomain"
      ],
      "Resource": [
          "arn:aws:sagemaker:*:*:domain/*"
      ]
  }
  ```
+ *在您 AWS Glue 会话的 IAM 角色上*：创建新的内联策略，然后粘贴以下 JSON 文件。该策略授予您的角色向会话附加标签 (`TagResource`) 或检索其标签列表 (`GetTags`) 的权限。

  ```
  {
      "Effect": "Allow",
      "Action": [
          "glue:TagResource",
          "glue:GetTags"
      ],
      "Resource": [
          "arn:aws:glue:*:*:session/*"
      ]
  }
  ```

**注意**  
应用这些权限时发生的失败不会阻止 AWS Glue 交互式会话的创建。您可以在 Studio 或 Studio Classic [CloudWatch](https://docs.aws.amazon.com//sagemaker/latest/dg/monitoring-cloudwatch.html)日志中找到有关失败原因的详细信息。
必须重新启动交 AWS Glue 互式会话的内核才能传播标签值的更新。

请务必记住以下几点：
+ 标签附加到会话之后，就无法通过传播将其删除。

  您可以直接通过 AWS CLI、 AWS Glue API 或从 AWS Glue 交互式会话中移除标签[https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)。例如，使用 AWS CLI，您可以通过提供会话的 ARN 和要移除的标签密钥来移除标签，如下所示：

  ```
  aws glue untag-resource \
  --resource-arn arn:aws:glue:region:account-id:session:session-name \
  --tags-to-remove tag-key1,tag-key2
  ```
+ Studio 和 Studio AWS Classic 向通过其用户界面创建的新 AWS Glue 交互式会话添加两个生成的内部标签（`sagemaker:user-profile-arn``sagemaker:shared-space-arn`和 `sagemaker:domain-arn``sagemaker:domain-arn`）或（和））。这些标签计入所有 AWS 资源上设置的 50 个标签的上限。`sagemaker:user-profile-arn` 和 `sagemaker:shared-space-arn` 都包含它们所属的域 ID。
+ 以`aws:``AWS:`、或任何大小写字母组合作为密钥前缀的标签密钥不会被传播，而是保留供 AWS 使用。

### 附加信息
<a name="more-information"></a>

有关标记更多信息，请参阅以下资源。
+ 要了解如何使用标签向 AWS 资源添加元数据，请参阅为资源添加[标签 AWS](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html)。
+ 有关使用标记跟踪成本的信息，请参阅 Studio 管理最佳实践中的[成本分析](https://docs.aws.amazon.com/whitepapers/latest/sagemaker-studio-admin-best-practices/cost-attribution.html)。
+ 有关 AWS Glue 根据标签密钥控制访问权限的信息，请参阅 [ABAC with](glue/latest/dg/security_iam_service-with-iam.html#security_iam_service-with-iam-tags)。 AWS Glue

## 在 Studio 或 Studio 经典版上启动 AWS Glue 互动会话
<a name="glue-sm-launch"></a>

创建角色、策略和 SageMaker AI 域后，您可以在 Studio 或 Studio Classic 中启动 AWS Glue 交互式会话。

1. 登录 SageMaker AI 控制台，网址为[https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)。

1. 从左侧导航窗格中选择 **Studio**。

1. 从 Studio 登录页面，选择启动 Studio 所需的域和用户配置文件。

1. 选择 **Open Studio** 并启动 JupyterLab 或 Studio 经典版应用程序。

1. 在 Jupyter 视图中，依次选择**文件**、**新建**和**笔记本**。

1. 对于 Studio Classic 用户：在**图像**下拉菜单中，选择 **SparkAnalytics 1.0** 或 **SparkAnalytics2.0**。在**内核**下拉菜单中，选择 **Glue Spark** 或 G **lue Python [PySpark 和 Ray]**。选定**选择**。

   对于 Studio 用户，请选择 **Glue Spark** 或 **Glue Python [PySpark 和 Ray]** 内核

1. （可选）使用 Jupyter magic 来自定义环境。有关 Jupyter magic 的更多信息，请参阅[在 Studio 或 Studio 经典版中配置 AWS Glue 互动会话](#glue-sm-magics)。

1. 开始编写 Spark 数据处理脚本。以下[笔记本](https://github.com/aws/amazon-sagemaker-examples/blob/main/use-cases/pyspark_etl_and_training/pyspark-etl-training.ipynb)展示了大型数据集上的 ETL end-to-end 工作流程，包括 AWS Glue 交互式会话、探索性数据分析、数据预处理，最后使用 AI 在处理后的数据上训练模型。 SageMaker 

## 在 Studio 或 Studio 经典版中配置 AWS Glue 互动会话
<a name="glue-sm-magics"></a>

**注意**  
在 AWS Glue 内核的生命周期内，所有神奇的配置都将延续到后续会话中。

你可以在 AWS Glue 交互式会话中使用 Jupyter 魔法来修改会话和配置参数。Magic 是在 Jupyter 单元开头以 `%` 为前缀的简短命令，它提供了一种快速简便的方法来帮助您控制环境。在你的 AWS Glue 互动会话中，默认会为你设置以下魔法：


| Magic | 默认 值 | 
| --- | --- | 
| %glue\$1version |  3.0  | 
| %iam\$1role |  *execution role attached to your SageMaker AI domain*  | 
| %region |  您的区域  | 

您可以使用 magic 来进一步自定义环境。例如，如果您想将分配给作业的工作线程数从默认的 5 更改为 10，则可以指定 `%number_of_workers 10`。如果要将会话配置为在空闲时间 10 分钟后停止，而不是默认的 2880，则可以指定 `%idle_timeout 10`。

目前所有可用的 Jupyter 魔法也在 AWS Glue Studio 或 Studio Classic 中可用。有关可用 AWS Glue 魔法的完整列表，请参阅[为 Jupyter 和 AWS Glue Studio 笔记本电脑配置 AWS Glue 交互式会话](https://docs.aws.amazon.com/glue/latest/dg/interactive-sessions-magics.html)。