

# Zoom Meetings에 연결
<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 Management Console을 사용하는 경우 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 계정이 API 액세스에 대해 활성화되어 있습니다.
+ Zoom Meetings 계정에서 OAuth2 앱을 생성했습니다. 이 통합에서는 계정에 대해 인증된 직접 호출을 수행하는 경우 AWS Glue에서 데이터에 안전하게 액세스하는 데 사용하는 자격 증명을 제공합니다. 자세한 내용은 [Zoom Meetings 클라이언트 앱 구성](zoom-meetings-configuring-client-app.md) 섹션을 참조하세요.

이러한 요구 사항을 충족하면 Zoom Meetings 계정에 AWS Glue를 연결할 준비가 된 것입니다. 일반적인 연결의 경우 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이 OAuth 흐름에 유효한 리디렉션으로 허용해야 하는 고유한 URL을 추가합니다.

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에 대한 AUTHORIZATION\$1CODE 권한 부여 유형을 지원합니다. 권한 부여 유형은 AWS Glue에서 Zoom Meetings과 통신하여 데이터에 대한 액세스를 요청하는 방법을 결정합니다.
+ 이 권한 부여 유형은 사용자를 인증하기 위해 사용자를 서드파티 권한 부여 서버로 리디렉션하는 방식에 의존하므로 '3각' OAuth로 간주됩니다. AWS Glue 콘솔을 통해 연결을 생성할 때 사용됩니다. 연결을 생성하는 사용자는 Zoom Meetings 클라이언트 애플리케이션에 대한 클라이언트 ID 및 클라이언트 보안 암호와 같은 OAuth 관련 정보를 제공해야 합니다. AWS Glue 콘솔은 사용자를 Zoom으로 리디렉션합니다. 사용자가 로그인하고 Zoom Meetings 인스턴스에 액세스하도록 요청된 권한을 AWS Glue에 허용해야 합니다.
+ 사용자는 여전히 AWS Glue 콘솔을 통해 연결을 생성할 때에도 Zoom Meetings에서 자체 연결된 앱을 생성하고 자체 클라이언트 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 | 아니요 | 예 | 아니요 | 예 | 아니요 | 
| 그룹 | 아니요 | 아니요 | 아니요 | 예 | 아니요 | 
| Group Member | 예 | 예 | 아니요 | 예 | 아니요 | 
| Group Admin | 아니요 | 예 | 아니요 | 예 | 아니요 | 
| Report(daily) | 예 | 아니요 | 아니요 | 예 | 아니요 | 
| Roles | 아니요 | 아니요 | 아니요 | 예 | 아니요 | 
| 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/ko_kr/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 버전입니다. Zoom Meetings에서는 현재 버전 v2만 지원하므로 값은 `v2`입니다.
+ `SELECTED_FIELDS`(List<String>) - 기본값: 비어 있습니다(SELECT \$1). 읽기에 사용됩니다. 선택한 엔터티에 대해 선택할 열의 쉼표로 구분된 목록입니다.
+ `FILTER_PREDICATE`(문자열) - 기본값: 비어 있습니다. 읽기에 사용됩니다. Spark SQL 형식이어야 합니다.
+ `QUERY`(문자열) - 기본값: 비어 있습니다. 읽기에 사용됩니다. 전체 Spark SQL 쿼리.

# Zoom Meetings 제한 사항
<a name="zoom-meetings-limitations"></a>

다음은 Zoom Meetings의 제한 사항 또는 참고 사항입니다.
+ Zoom Meetings는 orderby를 지원하지 않습니다.
+ 필요한 기준을 충족할 수 있는 필드가 없으므로 Zoom Meetings는 필터 기반 분할을 지원하지 않습니다.
+ 페이지 매김 제한 및 오프셋 기반 페이지 매김이 지원되지 않으므로 Zoom Meetings는 레코드 기반 분할을 지원하지 않습니다.