

# 连接到 Zoom Meeting
<a name="connecting-to-data-zoom-meetings"></a>

Zoom Meetings 是一个基于云的视频会议平台，可用于开展视频会议、音频会议、网络研讨会、会议录制和实时聊天。

**Topics**
+ [AWS Glue 支持 Zoom Meetings](zoom-meetings-support.md)
+ [包含创建和使用连接的 API 操作的策略](zoom-meetings-configuring-iam-permissions.md)
+ [配置 Zoom Meetings](zoom-meetings-configuring.md)
+ [配置 Zoom Meetings 客户端应用程序](zoom-meetings-configuring-client-app.md)
+ [配置 Zoom Meetings 连接](zoom-meetings-configuring-connections.md)
+ [从 Zoom Meetings 实体读取内容](zoom-meetings-reading-from-entities.md)
+ [Zoom Meetings 连接选项](zoom-meetings-connection-options.md)
+ [Zoom Meetings 限制](zoom-meetings-limitations.md)

# AWS Glue 支持 Zoom Meetings
<a name="zoom-meetings-support"></a>

AWS Glue 对 Zoom Meetings 的支持情况如下：

**是否支持作为来源？**  
是。可以使用 AWS Glue ETL 作业查询 Zoom Meetings 中的数据。

**是否支持作为目标？**  
否。

**支持的 Zoom Meetings API 版本**  
支持以下 Zoom Meetings API 版本：
+ v2

# 包含创建和使用连接的 API 操作的策略
<a name="zoom-meetings-configuring-iam-permissions"></a>

以下示例策略描述了创建和使用连接所需的 AWS IAM 权限。如果您要创建新角色，请创建包含以下内容的策略：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:ListConnectionTypes",
        "glue:DescribeConnectionType",
        "glue:RefreshOAuth2Tokens",
        "glue:ListEntities",
        "glue:DescribeEntity"
      ],
      "Resource": "*"
    }
  ]
}
```

------

如果您不想使用上述方法，也可以使用以下托管 IAM 策略：
+ [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole) – 授予对各种 AWS Glue 进程代表您运行所需的资源的访问权限。这些资源包括 AWS Glue、Amazon S3、IAM、CloudWatch Logs 和 Amazon EC2。如果您遵循此策略中指定的资源的命名约定，则 AWS Glue 进程具有所需的权限。此策略通常附加到在定义爬网程序、作业和开发终端节点时指定的角色。
+ [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess)：当策略所附加到的身份使用 AWS 管理控制台时，授予对 AWS Glue 资源的完全访问权限。如果遵循此策略中指定的资源的命名约定，则用户具有完全控制台功能。此策略通常附加到 AWS Glue 控制台的用户。

# 配置 Zoom Meetings
<a name="zoom-meetings-configuring"></a>

必须满足以下要求，才能使用 AWS Glue 从 Zoom Meetings 传输数据：

## 最低要求
<a name="zoom-meetings-configuring-min-requirements"></a>

以下是最低要求：
+ 拥有一个 Zoom Meetings 账户。
+ Zoom Meetings 账户已启用 API 访问权限。
+ 已在 Zoom Meetings 账户中创建了 OAuth2 应用程序。此集成提供 AWS Glue 在对您的账户进行身份验证调用时用于安全访问数据的凭证。有关更多信息，请参阅 [配置 Zoom Meetings 客户端应用程序](zoom-meetings-configuring-client-app.md)。

如果满足这些要求，就可以将 AWS Glue 连接到 Zoom Meetings 账户。对于常见连接，无需在 Zoom Meetings 中执行其他操作。

# 配置 Zoom Meetings 客户端应用程序
<a name="zoom-meetings-configuring-client-app"></a>

1. 登录 Zoom App Marketplace。

1. 选择**开发** > **构建应用程序**。

1. 为基于 OAuth 2.0 的应用程序选择**通用应用程序**。

1. 在**基本信息**页面上添加或更新有关应用程序的信息，例如应用程序的名称、应用程序的管理方式、应用程序凭证和 OAuth 信息。

1. 在**选择应用程序的管理方式**部分，确认要如何管理应用程序：

   1. **管理员管理**：账户管理员添加并管理应用程序

   1. **用户管理**：个人用户添加并管理应用程序。应用程序只能访问用户授权的数据。

1. **应用程序凭证**：构建流会自动为应用程序生成应用程序凭证（客户端 ID 和客户端密钥）。

1. 在“OAuth 信息”部分，为应用程序设置 OAuth。

   1. **OAuth 重定向 URL**（必填）：输入重定向 URL 或端点，以便在应用程序和 Zoom 之间设置 OAuth。

   1. **使用严格模式 URL**（可选）

   1. **子域检查**（可选）

   1. **OAuth 允许列表**（必填）：添加 Zoom 允许的任何唯一 URL 作为 OAuth 流的有效重定向网址。

1. 在**范围**页面上，选择允许应用调用的 Zoom API 方法。此范围定义了用户可以使用的信息和功能。选择以下精细范围：
   + user:read:list\$1users:admin
   + zoom\$1rooms:read:list\$1rooms:admin
   + group:read:list\$1members:admin
   + group:read:administrator:admin
   + group:read:list\$1groups:admin
   + report:read:admin
   + role:read:list\$1roles、role:read:list\$1roles:admin

   添加范围后选择**继续**，即可使用应用程序。

有关 OAuth 2.0 设置的更多信息，请参阅 [Integrations (OAuth apps)](https://developers.zoom.us/docs/integrations/)。

# 配置 Zoom Meetings 连接
<a name="zoom-meetings-configuring-connections"></a>

Zoom Meetings 支持 OAuth2 的 AUTHIZATION\$1CODE 授权类型。该授权类型决定了 AWS Glue 如何与 Zoom Meetings 通信来请求访问数据。
+ 此授权类型被视为“三足型”OAuth，因为它依赖于将用户重定向到第三方授权服务器来对用户进行身份验证。它用于通过 AWS Glue 控制台创建连接。用户要创建连接，则需为 Zoom Meetings 客户端应用程序提供与 OAuth 相关的信息，例如客户端 ID 和客户端密钥。AWS Glue 控制台会将用户重定向到 Zoom Meetings，用户必须登录并向 AWS Glue 授予所请求的权限，以便访问其 Zoom Meetings 实例。
+ 用户仍然可以选择在 Zoom Meetings 中创建自己的关联应用程序，并在通过 AWS Glue 控制台创建连接时，提供自己的客户端 ID 和客户端密钥。在这种情况下，他们仍会重定向到 Zoom Meetings，以便登录并授权 AWS Glue 访问其资源。
+ 此授权类型会生成刷新令牌和访问令牌。访问令牌的有效期很短，可以通过刷新令牌在不需要用户干预的情况下自动刷新。
+ 有关为授权码 OAuth 流创建关联应用程序的 Zoom Meetings 公共文档，请参阅 [Using OAuth 2.0](https://developers.zoom.us/docs/api/using-zoom-apis/#using-oauth-20)。

要配置 Zoom Meetings 连接，请执行以下操作：

1. 在 AWS Secrets Manager 中，创建一个包含以下详细信息的密钥：

   1. 对于客户管理型关联应用程序，密钥应包含关联应用程序的消费者密钥，且以 `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` 为键。

   1. 注意：必须在 AWS Glue 中为连接创建一个密钥。

1. 在 AWS Glue Glue Studio 中，按照以下步骤在**数据连接**下创建连接：

   1. 选择**连接类型**时，请选择 Zoom Meetings。

   1. 提供想要连接到的 Zoom Meetings 环境。

   1. 选择 AWS Glue 可以代入并有权执行以下操作的 AWS IAM 角色：

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

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "secretsmanager:DescribeSecret",
              "secretsmanager:GetSecretValue",
              "secretsmanager:PutSecretValue",
              "ec2:CreateNetworkInterface",
              "ec2:DescribeNetworkInterfaces",
              "ec2:DeleteNetworkInterface"
            ],
            "Resource": "*"
          }
        ]
      }
      ```

------

   1. 在 AWS Glue 中选择您要用于此连接的 `secretName`，然后放置令牌。

   1. 如果要使用网络，请选择网络选项。

1. 向与您的 AWS Glue 作业关联的 IAM 角色授予读取 `secretName` 的权限。

# 从 Zoom Meetings 实体读取内容
<a name="zoom-meetings-reading-from-entities"></a>

**先决条件**

要从中读取内容的 Zoom Meetings 对象。需要 `Group` 或 `Zoom Rooms` 等对象名称。

**源支持的实体**：


| 实体 | 可以筛选 | 支持限制 | 支持排序依据 | 支持 Select \$1 | 支持分区 | 
| --- | --- | --- | --- | --- | --- | 
| Zoom Rooms | 否 | 是 | 否 | 是 | 否 | 
| 组 | 否 | 否 | 否 | 是 | 否 | 
| 群成员 | 支持 | 是 | 否 | 是 | 否 | 
| 群管理员 | 否 | 是 | 否 | 是 | 否 | 
| 报告（每日） | 是 | 否 | 否 | 是 | 否 | 
| 角色 | 否 | 否 | 否 | 是 | 否 | 
| Users | 支持 | 是 | 否 | 是 | 否 | 

**示例：**

```
zoom_read = glueContext.create_dynamic_frame.from_options(
    connection_type="zoom",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "organization",
        "API_VERSION": "v2"
    }
)
```

**Zoom Meetings 实体和字段详细信息**：

Zoom Meetings 会动态加载所选实体下的可用字段。根据字段的数据类型，它支持以下筛选运算符。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/zoom-meetings-reading-from-entities.html)

## 对查询进行分区
<a name="zoom-meetings-reading-partitioning-queries"></a>

Zoom Meetings 不支持基于筛选条件的分区或基于记录的分区。

# Zoom Meetings 连接选项
<a name="zoom-meetings-connection-options"></a>

以下是 Zoom Meetings 的连接选项：
+ `ENTITY_NAME`（字符串）：（必填）用于读取。Zoom Meetings 实体的名称。例如 `group`。
+ `API_VERSION`（字符串）：（必填）用于读取。要使用的 Zoom Meetings Rest API。该值将为 `v2`，因为 Zoom Meetings 目前仅支持版本 v2。
+ `SELECTED_FIELDS`（列表<字符串>）–默认：empty(SELECT \$1)。用于读取。想要为所选实体选择的列的逗号分隔列表。
+ `FILTER_PREDICATE`（字符串）– 默认：空。用于读取。应采用 Spark SQL 格式。
+ `QUERY`（字符串）– 默认：空。用于读取。完整的 Spark SQL 查询。

# Zoom Meetings 限制
<a name="zoom-meetings-limitations"></a>

以下是 Zoom Meetings 的限制或说明：
+ Zoom Meetings 不支持排序依据。
+ 由于没有满足所需条件的字段，Zoom Meetings 不支持基于筛选条件的分区。
+ 由于不支持分页限制和基于偏移量的分页，Zoom Meetings 不支持基于记录的分区。