

# Monday에 연결
<a name="connecting-to-monday"></a>

 Monday.com은 프로젝트 관리 및 팀 협업을 간소화하는 다목적 업무 운영 체제입니다. 사용자 지정 가능한 워크플로, 시각적 대시보드 및 자동화 도구로 생산성을 높입니다. 사용자는 하나의 통합 플랫폼에서 작업을 추적하고, 리소스를 관리하며, 효과적으로 커뮤니케이션할 수 있습니다.

**Topics**
+ [AWS Glue의 Monday 지원](monday-support.md)
+ [연결을 생성하고 사용하기 위한 API 작업이 포함된 정책](monday-configuring-iam-permissions.md)
+ [Monday 구성](monday-configuring.md)
+ [Monday 연결 구성](monday-configuring-connections.md)
+ [Monday 엔터티에서 읽기](monday-reading-from-entities.md)
+ [Monday 연결 옵션 참조](monday-connection-options.md)
+ [제한 사항](monday-connector-limitations.md)
+ [새 Monday 계정을 생성합니다.](#monday-account-creation)

# AWS Glue의 Monday 지원
<a name="monday-support"></a>

AWS Glue에서는 다음과 같이 Monday를 지원합니다.

**소스로 지원되나요?**  
예. AWS Glue ETL 작업을 사용하여 Monday에서 데이터를 쿼리할 수 있습니다.

**대상으로서 지원되나요?**  
아니요.

**지원되는 Monday API 버전**  
 v2.

# 연결을 생성하고 사용하기 위한 API 작업이 포함된 정책
<a name="monday-configuring-iam-permissions"></a>

 다음 샘플 정책에서는 연결을 생성하고 사용하는 데 필요한 AWS 권한을 설명합니다. 새 역할을 생성하는 경우 다음을 포함하는 정책을 생성합니다.

------
#### [ 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 콘솔의 사용자에게 해당됩니다.

# Monday 구성
<a name="monday-configuring"></a>

AWS Glue를 사용하여 Monday에서 데이터를 전송하려면 먼저 다음 요구 사항을 충족해야 합니다.

## 최소 요구 사항
<a name="monday-configuring-min-requirements"></a>
+  이메일과 암호가 있는 Monday 개발자 계정이 있습니다. 자세한 내용은 [새 Monday 계정을 생성합니다.](connecting-to-monday.md#monday-account-creation) 섹션을 참조하세요.
+  Monday 개발자 계정이 API 액세스에 대해 활성화되어 있습니다. 평가판 기간 내에 추가 비용 없이 모든 Monday API를 사용할 수 있습니다. 평가판 기간이 끝나면 구독을 구입하여 데이터를 생성하고 액세스해야 합니다. 자세한 내용은 [Monday 라이선싱 페이지](https://developer.monday.com/api-reference/reference/about-the-api-reference)를 참조하세요.

 이러한 요구 사항을 충족하면 Monday 계정에 AWS Glue를 연결할 준비가 된 것입니다. 일반적인 연결의 경우 Monday에서 다른 작업을 수행하지 않아도 됩니다.

# Monday 연결 구성
<a name="monday-configuring-connections"></a>

Monday는 인증 메커니즘에 대해 다음 두 가지 유형을 지원합니다.

1.  OAuth 인증: Monday는 OAuth2에 대해 AUTHORIZATION\$1CODE 권한 부여 유형을 지원합니다.
   +  이 권한 부여 유형은 사용자를 인증하기 위해 사용자를 서드파티 권한 부여 서버로 리디렉션하는 방식에 의존하므로 '3각' OAuth로 간주됩니다. AWS Glue 콘솔을 통해 연결을 생성할 때 사용됩니다. 연결을 생성하는 사용자는 기본적으로 Monday instanceurl을 제외한 OAuth 관련 정보를 제공할 필요가 없는 AWS Glue 자체 연결된 앱에 의존할 수 있습니다. AWS Glue 콘솔은 사용자를 Monday로 리디렉션합니다. 사용자가 로그인하고 Monday 인스턴스에 액세스하도록 요청된 권한을 AWS Glue에 허용해야 합니다.
   +  사용자는 AWS Glue 콘솔을 통해 연결을 생성할 때에도 Monday에서 자체 연결된 앱을 생성하고 자체 클라이언트 ID와 클라이언트 보안 암호를 제공하기로 선택해야 합니다. 이 시나리오에서는 여전히 Monday로 리디렉션되어 로그인하고 리소스에 액세스할 수 있는 권한을 AWS Glue에 부여합니다.
   +  이 권한 부여 유형은 새로 고침 토큰과 액세스 토큰을 생성합니다. 액세스 토큰은 1시간 동안 활성 상태가 되고 새로 고침 토큰을 사용하여 사용자 상호 작용 없이 자동으로 새로 고칠 수 있습니다.
   +  자세한 내용은 [AUTHORIZATION\$1CODE OAuth 흐름을 위한 연결된 앱 생성 관련 설명서](https://developers.Monday.com/docs/api/v1/Oauth)를 참조하세요.

1.  사용자 지정 인증: 
   +  사용자 지정 권한 부여에 필요한 API 키 생성에 대한 공개 Monday 설명서는 [https://developer.monday.com/api-reference/docs/authentication\$1api-token-permissions](https://developer.monday.com/api-reference/docs/authentication#api-token-permissions) 페이지를 참조하세요.

다음 단계를 따라 Monday 연결을 구성합니다.

1.  AWS Secrets Manager에서 다음 세부 정보를 사용하여 보안 암호를 생성합니다. AWS Glue에서 각 연결에 대한 보안 암호를 생성해야 합니다.

   1.  OAuth 인증: 
      +  고객 관리형 연결된 앱 - 보안 암호는 키 역할을 하는 USER\$1MANAGED\$1CLIENT\$1APPLICATION\$1CLIENT\$1SECRET과 함께 연결된 앱 소비자 보안 암호를 포함해야 합니다.

   1.  사용자 지정 인증: 
      +  고객 관리형 연결된 앱 - 보안 암호는 키 역할을 하는 `personalAccessToken`과 함께 연결된 앱 소비자 보안 암호를 포함해야 합니다.

1. AWS Glue Studio의 **데이터 연결**에서 아래 단계에 따라 연결을 생성합니다.

   1.  데이터 연결에서 **연결 생성**을 선택합니다.

   1. **데이터 소스**를 선택할 때 Monday를 선택합니다.

   1. Monday **instanceURL**을 입력합니다.

   1.  다음 작업에 대한 권한이 있고 AWS Glue에서 수임할 수 있는 IAM 역할을 선택합니다.

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

****  

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

------

   1.  인증 유형을 선택하여 Monday에 연결 
      +  OAuth 인증: 연결하려는 Monday의 **토큰 URL** 및 **사용자 관리형 클라이언트 애플리케이션 ClientId**를 입력합니다.
      +  사용자 지정 인증: 인증 유형으로 **사용자 지정**을 선택하여 Monday에 연결합니다.

   1.  토큰을 넣기 위해 AWS Glue에서 이 연결에 사용할 `secretName`을 선택합니다.

   1.  네트워크를 사용하려는 경우 네트워크 옵션을 선택합니다.

1.  AWS Glue 작업 권한과 연결된 IAM 역할에 `secretName`을 읽을 수 있는 권한을 부여합니다. **다음**을 선택합니다.

1.  AWS Glue 작업 구성에서** 추가 네트워크 연결**로 `connectionName`을 제공합니다.

# Monday 엔터티에서 읽기
<a name="monday-reading-from-entities"></a>

 **사전 조건** 
+  읽으려는 Monday 객체. 사용 가능한 엔터티를 확인하려면 아래 지원되는 엔터티 테이블을 참조하세요.

 **소스에 대해 지원되는 엔터티** 

 엔터티 목록: 
+  Account: [https://developer.monday.com/api-reference/docs/account\$1queries](https://developer.monday.com/api-reference/docs/account#queries) 
+  Board: [https://developer.monday.com/api-reference/docs/boards\$1queries](https://developer.monday.com/api-reference/docs/boards#queries) 
+  Column: [https://developer.monday.com/api-reference/docs/columns\$1queries](https://developer.monday.com/api-reference/docs/columns#queries) 
+  Docs: [https://developer.monday.com/api-reference/docs/docs\$1queries](https://developer.monday.com/api-reference/docs/docs#queries) 
+  Document Block: [https://developer.monday.com/api-reference/docs/blocks\$1queries](https://developer.monday.com/api-reference/docs/blocks#queries) 
+  Files: [https://developer.monday.com/api-reference/docs/files\$1queries](https://developer.monday.com/api-reference/docs/files#queries) 
+  Folders: [https://developer.monday.com/api-reference/docs/folders\$1queries](https://developer.monday.com/api-reference/docs/folders#queries) 
+  Groups: [https://developer.monday.com/api-reference/docs/groups\$1queries](https://developer.monday.com/api-reference/docs/groups#queries) 
+  Item: [https://developer.monday.com/api-reference/docs/items\$1queries](https://developer.monday.com/api-reference/docs/items#queries) 
+  Subitems: [https://developer.monday.com/api-reference/docs/subitems\$1queries](https://developer.monday.com/api-reference/docs/subitems#queries) 
+  Tags: [https://developer.monday.com/api-reference/docs/tags-queries\$1queries](https://developer.monday.com/api-reference/docs/tags-queries#queries) 
+  Teams: [https://developer.monday.com/api-reference/docs/teams\$1queries](https://developer.monday.com/api-reference/docs/teams#queries) 
+  Updates: [https://developer.monday.com/api-reference/docs/updates\$1queries](https://developer.monday.com/api-reference/docs/updates#queries) 
+  Users: [https://developer.monday.com/api-reference/docs/users\$1queries](https://developer.monday.com/api-reference/docs/users#queries) 
+  Workspaces: [https://developer.monday.com/api-reference/docs/workspaces\$1queries](https://developer.monday.com/api-reference/docs/workspaces#queries) 


| 개체 | 필터링 가능 | 제한 지원 | 정렬 기준 지원 | Select \$1 지원 | 분할 지원 | 
| --- | --- | --- | --- | --- | --- | 
| Account | 아니요 | 아니요 | 아니요 | 예 | 아니요 | 
| Boards | 예 | 예 | 아니요 | 예 | 아니요 | 
| 열 | 아니요 | 아니요 | 아니요 | 예 | 아니요 | 
| Docs | 예 | 예 | 아니요 | 예 | 아니요 | 
| Document Blocks | 아니요 | 예 | 아니요 | 예 | 아니요 | 
| 파일 | 예 | 아니요 | 아니요 | 예 | 아니요 | 
| Groups | 아니요 | 아니요 | 아니요 | 예 | 아니요 | 
| Item | 예 | 예 | 아니요 | 예 | 아니요 | 
| Subitems | 아니요 | 아니요 | 아니요 | 예 | 아니요 | 
| Tags | 예 | 아니요 | 아니요 | 예 | 예 | 
| 팀 | 예 | 아니요 | 아니요 | 예 | 아니요 | 
| 업데이트 | 아니요 | 예 | 아니요 | 예 | 아니요 | 
| Users | 예 | 예 | 아니요 | 예 | 아니요 | 
| WorkSpaces | 예 | 예 | 아니요 | 예 | 아니요 | 
| 폴더 | 예 | 예 | 아니요 | 예 | 아니요 | 

 **예제** 

```
monday_read = glueContext.create_dynamic_frame.from_options(
     connection_type="monday",
     connection_options={
         "connectionName": "connectionName",
         "ENTITY_NAME": "account",
         "API_VERSION": "v2"
     }
```

# Monday 연결 옵션 참조
<a name="monday-connection-options"></a>

다음은 Monday의 연결 옵션입니다.
+  `ENTITY_NAME`(문자열) - (필수) 읽기/쓰기에 사용됩니다. Monday에서의 객체 이름.
+  `API_VERSION`(문자열) - (필수) 읽기/쓰기에 사용됩니다. 사용하려는 Monday Rest API 버전입니다. 예: v2.
+  `SELECTED_FIELDS`(List<String>) - 기본값: 비어 있습니다(SELECT \$1). 읽기에 사용됩니다. 객체에 대해 선택할 열.
+  `FILTER_PREDICATE`(문자열) - 기본값: 비어 있습니다. 읽기에 사용됩니다. Spark SQL 형식이어야 합니다.
+  `QUERY`(문자열) - 기본값: 비어 있습니다. 읽기에 사용됩니다. 전체 Spark SQL 쿼리.

# 제한 사항
<a name="monday-connector-limitations"></a>

다음은 Monday 커넥터의 제한 사항입니다.
+  동적 메타데이터 응답은 아래에 언급된 설명서와 일부 충돌합니다.
  +  Group, Column 엔터티는 필터 작업을 지원하지만 동적 메타데이터 엔드포인트에 존재하지 않으므로 필터링할 수 없는 개체로 유지됩니다.
  +  동적 엔드포인트는 약 15,000개 이상의 라인으로 구성되고 단일 응답으로 모든 엔터티의 메타데이터를 반환합니다. 따라서 필드가 로드되는 데 평균 10초가 걸리므로 작업 실행에 더 많은 시간이 필요합니다.
  +  Monday 속도 제한은 아래 표를 참조하세요. 동적 엔터티의 응답 데이터 크기가 크면 상당한 지연이 발생하며, 필드 로드에 평균 10초가 필요합니다.    
<a name="monday-rate-limit-table"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/monday-connector-limitations.html)

## 새 Monday 계정을 생성합니다.
<a name="monday-account-creation"></a>

1.  Monday 홈페이지인 [https://monday.com/](https://monday.com/)으로 이동하고 **Login**을 선택합니다.

1.  로그인 페이지로 리디렉션됩니다. 페이지 하단에서 **Sign up**을 선택합니다.

1.  이메일 주소를 입력하고 **계속**을 선택합니다. 또는 Google을 통해 로그인할 수 있습니다.

1.  필요한 세부 정보를 입력하고 **Continue**를 선택합니다.

1.  설문 조사 질문을 완료하고 단계에 따라 계정 생성 프로세스를 완료합니다.

**OAuth 애플리케이션을 등록합니다.**

1.  monday.com 계정에 로그인합니다. 화면 왼쪽 하단 모서리에 있는 아바타(사진 아이콘)를 클릭합니다.

1.  **Developer**를 선택합니다.

1.  **앱 생성**을 선택합니다.

1.  이름 및 설명에 관한 필수 필드를 입력합니다.

1. 오른쪽에 있는 ‘OAuth’ 섹션으로 이동하여 범위를 추가하고 ‘Save Feature’를 선택합니다.

1.  범위 옆의 ‘Redirect URLS’ 탭으로 이동하여 리디렉션 URL을 추가하고 ‘Save Feature’를 선택합니다.

1.  **Redirect URLs** 탭에서 앱의 URL을 입력합니다. 이 값은 https://\$1region-code\$1.console.aws.amazon.com/appflow/oauth여야 합니다. 예를 들어 `us-east-1 `을 사용하는 경우 `https://us-east-1.console.aws.amazon.com/appflow/oauth`를 추가할 수 있습니다.

1.  이제 애플리케이션을 사용할 준비가 되었습니다. 자격 증명은 ‘Basic Information’ 섹션에서 찾을 수 있습니다. 클라이언트 ID와 클라이언트 보안 암호 문자열을 기록해 둡니다. 이 문자열은 AppFlow 커넥터를 사용하여 이 앱과 연결하는 데 사용됩니다.

**개인 액세스 토큰 생성:**

 현재 monday.com은 개인 토큰인 V2 API 토큰만 제공합니다. API 토큰에 액세스하려면 사용자 수준에 따라 두 가지 방법 중 하나를 사용할 수 있습니다. 관리자 사용자는 두 방법을 모두 활용하여 API 토큰을 획득할 수 있습니다. 멤버 사용자는 Developer 탭에서 API 토큰에 액세스할 수 있습니다.

 관리자 - monday.com 계정의 관리자 사용자인 경우 다음 단계에 따라 ‘Admins’ 탭에서 API 토큰에 액세스할 수 있습니다.

1.  monday.com 계정에 로그인합니다. 화면 왼쪽 하단 모서리에 있는 아바타(사진 아이콘)를 클릭합니다.

1.  이후 표시되는 메뉴에서 ‘Administration’을 선택합니다(관리자 권한이 있어야 함).

1.  ‘API’ 섹션으로 이동하여 ‘API V2 토큰’을 생성합니다. 토큰을 복사하고 사용할 수 있습니다.

 개발자 - monday.com 계정의 멤버 사용자인 경우 다음 단계를 통해 Developer 탭에서 API 토큰에 액세스할 수 있습니다.

1.  monday.com 계정에 로그인합니다. 화면 왼쪽 하단 모서리에 있는 아바타(사진 아이콘)를 클릭합니다.

1.  이후 표시되는 메뉴에서 ‘Developers’를 선택합니다.

1.  상단 메뉴에서 ‘Developer’ 드롭다운 메뉴를 선택합니다. ‘My Access Tokens’ 드롭다운 메뉴에서 첫 번째 옵션을 선택합니다.