对 Amazon Glue Studio 进行设置 - Amazon Glue Studio
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

对 Amazon Glue Studio 进行设置

如果您首次使用 Amazon Glue Studio,请完成本部分中的任务:

完成初始 Amazon 配置任务

要使用 Amazon Glue Studio,必须首先完成以下任务:

注册Amazon

如果您还没有 Amazon Web Services 账户,请完成以下步骤创建一个。

注册 Amazon Web Services 账户
  1. 打开 https://portal.aws.amazon.com/billing/signup

  2. 按照屏幕上的说明进行操作。

    在注册时,您将接到一通电话,要求您使用电话键盘输入一个验证码。

    当您注册 Amazon Web Services 账户 时,系统将会创建一个 Amazon Web Services 账户根用户。根用户有权访问该账户中的所有 Amazon Web Services和资源。作为安全最佳实践,请 为管理用户分配管理访问权限,并且只使用根用户执行 需要根用户访问权限的任务

创建 IAM 管理员用户

如果您的账户中已包含具有完整Amazon管理权限的 IAM 用户,则可以跳过此部分。

保护 IAM 用户

注册 Amazon Web Services 账户 后,启用多重身份验证(MFA)保护您的管理用户。有关说明,请参阅 IAM 用户指南中的为 为 IAM 用户(控制台)启用虚拟 MFA 设备

要授予其他用户访问您的 Amazon Web Services 账户 资源的权限,请创建 IAM 用户。为了保护您的 IAM 用户,请启用 MFA 并仅向 IAM 用户授予执行任务所需的权限。

有关创建和保护 IAM 用户的更多信息,请参阅 IAM 用户指南中的以下主题:

作为 IAM 用户登录

通过选择 IAM user (IAM 用户) 并输入您的Amazon Web Services 账户 ID 或账户别名来登录 IAM 控制台。在下一页上,输入您的 IAM 用户名和密码。

注意

为方便起见,Amazon登录页面使用浏览器 Cookie 记住您的 IAM 用户名和账户信息。如果您之前以其他用户身份登录过,请选择此按钮下面的登录链接,返回登录主页。在此处,您可以输入要重新导向到您账户 IAM 用户登录页面的 Amazon Web Services 账户 ID 或账户别名。

审核 Amazon Glue Studio 用户需要 IAM 权限

要使用 Amazon Glue Studio,用户必须有权访问各种 Amazon 资源。用户必须能够查看和选择 Amazon S3 存储桶、IAM 策略和角色,以及 Amazon Glue Data Catalog 对象。

Amazon Glue 服务权限

Amazon Glue Studio 使用 Amazon Glue 服务的操作和资源。您的用户需要这些操作和资源的权限,从而有效使用 Amazon Glue Studio。您可以授予 Amazon Glue Studio 用户 AWSGlueConsoleFullAccess 托管式策略,或创建具有较小权限集的自定义策略。

重要

根据安全性最佳实践,建议通过收紧策略来限制访问,从而进一步限制对 Amazon S3 存储桶和 Amazon CloudWatch 日志组的访问。有关示例 Amazon S3 策略,请参阅编写 IAM policy:如何授予对 Amazon S3 存储桶的访问权限

为 Amazon Glue Studio 创建自定义 IAM 策略

您可以为 Amazon Glue Studio 创建一个包含较小权限集的自定义策略。该策略可以为对象或操作子集授予权限。创建自定义策略时,请使用以下信息。

要使用 Amazon Glue Studio API,请在 IAM 权限的操作策略中包括 glue:UseGlueStudio。使用 glue:UseGlueStudio 将允许您访问所有 Amazon Glue Studio,即使随着时间的推移向 API 中添加了更多操作。

任务操作

  • GetJob

  • CreateJob

  • DeleteJob

  • GetJobs

  • UpdateJob

任务运行操作

  • StartJobRun

  • GetJobRuns

  • BatchStopJobRun

  • GetJobRun

数据库操作

  • GetDatabases

计划操作

  • GetPlan

表操作

  • SearchTables

  • GetTables

  • GetTable

连接操作

  • CreateConnection

  • DeleteConnection

  • UpdateConnection

  • GetConnections

  • GetConnection

映射操作

  • GetMapping

安全配置操作

  • GetSecurityConfigurations

脚本操作

  • CreateScript (不同于中的同名 APIAmazon Glue)

访问 Amazon Glue Studio API

要访问 Amazon Glue Studio,请在 IAM 权限的操作策略列表中添加 glue:UseGlueStudio

在以下示例中,glue:UseGlueStudio 已包括在操作策略中,但 Amazon Glue Studio API 不是单独识别的。这是因为当您包括 glue:UseGlueStudio 时,系统将会向您自动授予访问内部 API 的权限,而无需在 IAM 权限中指定单个 Amazon Glue Studio API。

在该示例中,列出的其他操作策略(例如,glue:SearchTables)并非 Amazon Glue Studio API,因此,需要根据需要将它们包含在 IAM 权限中。此外,您可能还希望包括 Amazon S3 代理操作,以指定要授予的 Amazon S3 访问权限级别。以下示例策略提供对开放 Amazon Glue Studio、创建可视化任务及保存/运行任务(如果选定 IAM 角色具有足够权限)的访问权限。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "glue:UseGlueStudio", "iam:ListRoles", "iam:ListUsers", "iam:ListGroups", "iam:ListRolePolicies", "iam:GetRole", "iam:GetRolePolicy", "glue:SearchTables", "glue:GetConnections", "glue:GetJobs", "glue:GetTables", "glue:BatchStopJobRun", "glue:GetSecurityConfigurations", "glue:DeleteJob", "glue:GetDatabases", "glue:CreateConnection", "glue:GetSchema", "glue:GetTable", "glue:GetMapping", "glue:CreateJob", "glue:DeleteConnection", "glue:CreateScript", "glue:UpdateConnection", "glue:GetConnection", "glue:StartJobRun", "glue:GetJobRun", "glue:UpdateJob", "glue:GetPlan", "glue:GetJobRuns", "glue:GetTags", "glue:GetJob" ], "Resource": "*" }, { "Action": [ "iam:PassRole" ], "Effect": "Allow", "Resource": "arn:aws:iam::*:role/AWSGlueServiceRole*", "Condition": { "StringLike": { "iam:PassedToService": [ "glue.amazonaws.com" ] } } } ] }

笔记本和数据预览权限

数据预览和笔记本允许您在任务的任何阶段(读取、转换、写入)查看数据样本,而无需运行任务。您可以为 Amazon Glue Studio 指定访问数据时要使用的 Amazon Identity and Access Management (IAM) 角色。IAM 角色可代入,没有关联的标准长期凭证(如密码或访问密钥)。相反,当 Amazon Glue Studio 代入角色时,IAM 会为其提供临时安全凭证。

要确保数据预览和笔记本命令正常工作,请使用名称开头为字符串 AWSGlueServiceRole 的角色。如果选择为角色使用其他名称,则必须在 IAM 中为角色添加 iam:passrole 权限并配置策略。有关更多信息,请参阅为未命名为 “AWSGlueServiceRole*” 的角色创建 IAM Statement

警告

如果角色为笔记本授予 iam:passrole 权限,并且您实施了角色链接,则用户可能会无意中获得访问笔记本的权限。目前没有实施审计,因此不允许您监控哪些用户已被授予访问笔记本的权限。

Amazon CloudWatch 权限

您可以使用监控您的Amazon Glue Studio作业Amazon CloudWatch,此工具可从中Amazon Glue将原始数据收集到易读 near-real-time 指标中并进行处理。默认情况下,Amazon Glue指标数据 CloudWatch 自动发送到。有关更多信息,请参阅 Amazon CloudWatch 是什么?亚马逊 CloudWatch 用户指南中,Amazon Glue在Amazon Glue开发者指南中。

要访问 CloudWatch 控制面板,则访问控制面板,Amazon Glue Studio需要以下内容之一:

  • AdministratorAccess 策略

  • CloudWatchFullAccess 策略

  • 包含以下一个或多个特定权限的自定义策略:

    • cloudwatch:GetDashboardcloudwatch:ListDashboards,以查看控制面板

    • cloudwatch:PutDashboard,以创建或修改控制面板

    • cloudwatch:DeleteDashboards,以删除控制面板

有关使用策略更改 IAM 用户权限的更多信息,请参阅《IAM 用户指南》中的更改 IAM 用户的权限

审核 ETL 任务所需的 IAM 权限

当您使用 Amazon Glue Studio 创建任务时,该任务代入您在创建它时指定的 IAM 角色的权限。此 IAM 角色必须有权限从您的数据源中提取数据,将其写入您的目标,并访问 Amazon Glue 资源。

为任务创建的角色的名称必须以字符串 AWSGlueServiceRole 开头,以便其能够正确地被 Amazon Glue Studio 使用。例如,您可以将角色命名为 AWSGlueServiceRole-FlightDataJob

数据源和数据目标权限

Amazon Glue Studio 任务必须具有您在任务中使用的任何源、目标、脚本和临时目录等 Amazon S3 的访问权限。您可以创建策略,提供对特定 Amazon S3 资源的精细访问权限。

  • 数据源需要 s3:ListBuckets3:GetObject 权限。

  • 数据目标需要s3:ListBuckets3:PutObjects3:DeleteObject 权限。

如果选择 Amazon Redshift 作为数据源,那么您可以为集群权限提供角色。针对 Amazon Redshift 集群运行的任务会发出命令,使用临时凭证访问 Amazon S3 进行临时存储。如果您的任务运行超过一小时,这些凭证将会过期,导致任务失败。若要避免此问题,您可以将角色分配给 Amazon Redshift 集群本身,其授予使用临时凭证的任务所需的权限。有关更多信息,请参阅《Amazon Glue 开发人员指南》中的将数据移入和移出 Amazon Redshift

如果任务使用 Amazon S3 以外的数据源或目标,则您必须为任务使用的 IAM 角色附上所需的权限,从而访问这些数据源和目标。有关更多信息,请参阅《Amazon Glue 开发人员指南》中的设置环境以访问数据存储

如果要为数据存储使用连接器和连接,则您需要在使用连接器所需的权限中描述的其他权限。

删除任务所需的权限

在 Amazon Glue Studio 中,您可以在控制台选择多个任务删除。若要执行此操作,您必须具有 glue:BatchDeleteJob 权限。这不同于需要 glue:DeleteJob 权限来删除任务的 Amazon Glue 控制台。

Amazon Key Management Service 权限

如果您计划访问使用 Amazon Key Management Service(Amazon KMS)进行服务器端加密的 Amazon S3 源和目标,则需为任务使用的 Amazon Glue Studio 角色附上策略,从而使任务能够解密数据。任务角色需要 kms:ReEncryptkms:GenerateDataKeykms:DescribeKey 权限。此外,任务角色需要 kms:Decrypt 权限来上载或下载使用 Amazon KMS 客户主密钥(CMK)加密的 Amazon S3 对象。

使用 Amazon KMS CMK 需支付额外费用。有关更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的 Amazon Key Management Service 概念 – 客户主密钥(CMK)Amazon Key Management Service 定价

使用连接器所需的权限

如果您使用 Amazon Glue 自定义连接器和连接来访问数据存储,则需要为用于运行 Amazon Glue ETL 任务的角色附上其他权限:

  • 亚马逊云科技托管式策略 AmazonEC2ContainerRegistryReadOnly,用于访问购买于 Amazon Web Services Marketplace 的连接器。

  • glue:GetJobglue:GetJobs 权限。

  • Amazon Secrets Manager 权限,用于访问与连接一起使用的密钥。有关示例 IAM 策略,请参阅 Example: Permission to retrieve secret values(示例:检索密钥值的权限)。

如果您的 Amazon Glue ETL 任务在运行 Amazon VPC 的 VPC 中运行,则 VPC 必须按照为 ETL 任务配置 VPC中的描述进行配置。

为 Amazon Glue Studio 设置 IAM 权限

您可以通过使用 Amazon 管理员用户,创建角色并将策略分配给用户和任务角色。

您可以使用AWSGlueConsoleFullAccessAmazon托管策略提供使用Amazon Glue Studio控制台所需的权限。

要创建您自己的策略,请按照《Amazon Glue 开发人员指南》中的为 Amazon Glue 服务创建 IAM policy 记录的步骤进行操作。包括前面在 审核 Amazon Glue Studio 用户需要 IAM 权限 中描述的 IAM 权限。

创建 IAM 角色

Amazon Glue Studio 需要权限才能代表您访问其他服务。您可以创建 IAM 角色并为该角色分配策略来提供这些权限。您可以在创建任务、使用笔记本编辑器或使用数据预览时指定此角色。Amazon Glue Studio 或者您的 ETL 任务将代入此角色,获得访问其他服务和数据位置的临时权限。

您需要向您的 IAM 角色授予在 Amazon Glue Studio 和 Amazon Glue 代表您调用其他服务时可使用的权限。这包括访问 Amazon S3 以存储脚本和临时文件,以及用于 Amazon Glue Studio 的任何其他源或目标的权限。

要为 ETL 任务创建角色
  1. 在 Amazon Web Services Management Console 中,打开 IAM 控制台 https://console.aws.amazon.com/iam/,选择角色,然后在左侧导航窗格中选择创建角色

  2. 对于角色类型,选择 Amazon Service (亚马逊云科技服务),找到并选择 Glue,然后选择 Next: Permissions (下一步: 权限)

  3. Attach permissions policy(附加权限策略)页面上,选择包含所需权限的策略。例如,您可以为常规Amazon Glue Studio和Amazon Glue权限选择Amazon托管策略,AWSGlueServiceRoleFullAccess为访问 Amazon S3 资源选择Amazon托管策略 Ama zonS3。

  4. 根据需要为其他数据存储或服务添加其他策略。

  5. 选择 Next: Review(下一步: 审核)

  6. 对于 Role name (角色名称),输入您角色的名称,例如 AWSGlueServiceRole-Studio。选择以字符串 AWSGlueServiceRole 开头的名称,可允许将角色从控制台用户传递到服务。

    如果为角色选择其他名称,则您必须添加一个为您的用户授予对 IAM 角色的 iam:PassRole 权限的策略,以匹配您的命名约定。

    选择 Create role(创建角色)完成角色的创建。

将策略附加至 Amazon Glue Studio 用户

登录 Amazon Glue Studio 控制台的任何 Amazon 用户都必须具有访问特定资源的权限。您可使用向用户分配 IAM 策略来提供这些权限。

要将 AWSGlueConsoleFullAccess 托管式策略附加到用户
  1. 登录Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择 Policies (策略)

  3. 在策略列表中,选中旁边的复选框AWSGlueConsoleFullAccess。您可以使用 Filter 菜单和搜索框来筛选策略列表。

  4. 选择 Policy actions(策略操作),然后选择 Attach(附加)

  5. 选择要将策略附加到的用户。您可以使用 Filter(筛选条件)菜单和搜索框来筛选委托人实体列表。在选择要将策略附加到的用户后,选择 Attach policy (附加策略)。

  6. 根据需要,重复前面的步骤向用户附上其他策略。

为未命名为 “AWSGlueServiceRole*” 的角色创建 IAM Statement

要为 Amazon Glue Studio 所使用的角色配置 IAM policy
  1. 登录Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 添加新的 IAM policy。您可以添加到现有策略或创建新的 IAM 内联策略。若要创建 IAM policy:

    1. 选择 Policies,然后选择 Create Policy。如果 Get Started (开始使用) 按钮出现,选择此按钮,然后选择 Create Policy (创建策略)

    2. Create Your Own Policy 旁,选择 Select

    3. 对于 Policy Name (策略名称),键入一个便于您稍后参考的值。(可选)在 Description (描述) 中键入说明性文本。

    4. 对于 Policy Document (策略文档),请使用以下格式键入策略语句,然后选择 Create Policy (创建策略)

  3. 将以下数据块复制并粘贴到 “Statement”(语句)阵列下面的策略中,将 my-interactive-session-role- prefix 替换为所有要关联的常见角色的前缀Amazon Glue。

    { "Action": [ "iam:PassRole" ], "Effect": "Allow", "Resource": "arn:aws:iam::*:role/my-interactive-session-role-prefix*", "Condition": { "StringLike": { "iam:PassedToService": [ "glue.amazonaws.com " ] } } }

    以下是策略中包含的版本和语句阵列的完整示例

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "iam:PassRole" ], "Effect": "Allow", "Resource": "arn:aws:iam::*:role/my-interactive-session-role-prefix*", "Condition": { "StringLike": { "iam:PassedToService": [ "glue.amazonaws.com " ] } } } ] }
  4. 要对某个用户启用策略,请选择用户

  5. 选择您要向其挂载策略的 用户。

为 ETL 任务配置 VPC

您可以使用 Amazon Virtual Private Cloud (Amazon VPC) 在 Amazon Web Services 云 内您自己的逻辑隔离区域中定义虚拟化网络,我们称之为 虚拟私有云 (VPC) 。可在 VPC 中启动实例等 Amazon 资源。您的 VPC 与您可能在自己的数据中心中运行的传统网络极为相似,同时享有使用来自 Amazon 的可扩展基础设施的优势。您可以配置您的 VPC;您可以选择它的 IP 地址范围、创建子网并配置路由表、网关和安全设置。您可以将您的 VPC 中的实例连接到网络。您可以将您的 VPC 连接到公司的数据中心,并将 Amazon Web Services 云 作为数据中心的延伸。要保护各个子网中的资源,您可以利用多种安全层,包括安全组和网络访问控制列表。有关更多信息,请参阅《Amazon VPC 用户指南》

使用连接器时,您可以配置您的 Amazon Glue ETL 任务,使其在 VPC 内运行。您必须根据需要为以下内容配置 VPC:

  • 不在 Amazon 中的数据存储的公有网络访问。必须能够从 VPC 子网使用任务访问的所有数据存储。

  • 如果您的任务既要访问 VPC 资源又要访问公有 Internet,VPC 内部必须具有网络地址转换(NAT)网关。

    有关更多信息,请参阅《Amazon Glue 开发人员指南》中的设置环境以访问数据存储

填充 Amazon Glue 数据目录

Amazon Glue Studio 可以使用 Amazon Glue Data Catalog 中定义的数据集。这些数据集用作 Amazon Glue Studio 中 ETL 工作流的源和目标。如果为数据源或目标选择数据目录,则在创建任务之前,必须存在与数据源或数据目标相关的数据目录表。

当从数据源读取或写入数据源时,ETL 任务需要了解数据的架构。ETL 任务可以从 Amazon Glue Data Catalog 的表中获取信息。您可以使用爬网程序、Amazon Glue 控制台、Amazon CLI,或 Amazon CloudFormation 模板文件将数据库和表添加到数据目录中。有关填充数据目录的更多信息,请参阅《Amazon Glue Glue 开发人员指南》中的数据目录

如果使用连接器,您可以在配置 Amazon Glue Studio 中 ETL 任务的数据源节点时,使用架构生成器输入架构信息。有关更多信息,请参阅使用自定义连接器编写任务

对于某些数据源,Amazon Glue Studio 可以自动推断其从指定位置的文件中读取的数据架构。