

# Productboard에 연결
<a name="connecting-to-productboard"></a>

Productboard는 제품 팀이 적합한 제품을 더욱 빠르게 출시할 수 있도록 지원하는 제품 관리 시스템입니다. Zendesk, UiPath, Microsoft와 같은 3,000곳 이상의 최신 제품 중심 기업이 Productboard를 사용하여 사용자에게 무엇이 실제로 필요한지 이해하고, 앞으로 구축해야 할 사항의 우선순위를 정하고, 로드맵을 중심으로 모든 의견을 모읍니다.

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

# AWS Glue의 Productboard 지원
<a name="productboard-support"></a>

AWS Glue는 다음과 같이 Productboard를 지원합니다.

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

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

**지원되는 Productboard API 버전**  
 v1 

# 연결을 생성하고 사용하기 위한 API 작업이 포함된 정책
<a name="productboard-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 콘솔을 사용하는 경우 AWS Glue 리소스에 대한 전체 액세스 권한을 부여합니다. 이 정책에 지정된 리소스의 이름 변환을 따르면 사용자는 콘솔 전체 용량을 소유합니다. 이 정책은 보통 AWS Glue 콘솔의 사용자에게 해당됩니다.

# Productboard 구성
<a name="productboard-configuring"></a>

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

## 최소 요구 사항
<a name="productboard-configuring-min-requirements"></a>
+ 이메일과 암호를 사용하는 Productboard 계정이 있습니다. 계정 생성에 대한 자세한 내용은 [Productboard 계정 생성](productboard-create-account.md)을 참조하세요.
+  AWS Glue에 대한 서비스 액세스 권한으로 AWS 계정을 생성해야 합니다.
+ Productboard 계정의 인증 세부 정보가 있습니다(사용자 지정 인증 사용 시 JWT 토큰, 또는 OAuth2.0 사용 시 클라이언트 ID 및 보안 암호).
+ 사용자가 `OAuth2.0`을 사용하려는 경우 [Productboard에 애플리케이션을 등록](https://app.productboard.com/oauth2/applications/new)하고 [How to integrate with Productboard via OAuth2 - developer documentation](https://developer.productboard.com/docs/how-to-integrate-with-productboard-via-oauth2-developer-documentation)의 지침에 따라 애플리케이션을 설정합니다.

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

# Productboard 연결 구성
<a name="productboard-configuring-connections"></a>

 

Productboard는 사용자 지정 인증 및 `OAuth2.0`을 지원합니다. `OAuth2.0` Productboard는 `AUTHORIZATION_CODE` 권한 부여 유형을 지원합니다.
+ 이 권한 부여 유형은 사용자를 인증하기 위해 사용자를 서드파티 권한 부여 서버로 리디렉션하는 방식에 의존하므로 ‘3각’ `OAuth`로 간주됩니다. AWS Glue 콘솔을 통해 연결을 생성할 때 사용됩니다. 연결을 생성하는 사용자는 기본적으로 Productboard Client ID 및 Client Secret을 제외한 `OAuth` 관련 정보를 제공할 필요가 없는 AWS Glue 자체 연결된 앱에 의존할 수 있습니다. AWS Glue 콘솔은 사용자를 Productboard로 리디렉션합니다. 사용자가 로그인하고 Productboard 인스턴스에 액세스하도록 요청된 권한을 AWS Glue에 허용해야 합니다.
+ 사용자는 여전히 AWS Glue 콘솔을 통해 연결을 생성할 때에도 Productboard에서 자체 연결된 앱을 생성하고 자체 Client ID 및 Client Secret을 제공하기로 선택할 수 있습니다. 이 시나리오에서는 여전히 Productboard로 리디렉션되어 로그인하고 리소스에 액세스할 수 있는 권한을 AWS Glue에 부여합니다.
+ 이 권한 부여 유형은 새로 고침 토큰과 액세스 토큰을 생성합니다. 액세스 토큰은 수명이 짧으며 새로 고침 토큰을 사용하여 사용자 상호 작용 없이 자동으로 새로 고칠 수 있습니다.
+ `AUTHORIZATION_CODE OAuth` 흐름에 대해 연결된 앱을 생성하는 방법에 대한 공개 Productboard 설명서는 [How to integrate with Productboard via OAuth2 - developer documentation](https://developer.productboard.com/docs/how-to-integrate-with-productboard-via-oauth2-developer-documentation)을 참조하세요.

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

1. AWS Secrets Manager에서 다음 세부 정보로 보안 암호를 생성합니다.
   + `OAuth` 인증 - 고객 관리형 연결된 앱: 보안 암호는 키 역할을 하는 `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`과 함께 연결된 앱 소비자 보안 암호를 포함해야 합니다.
   + `Custom auth` - 고객 관리형 연결된 앱: 보안 암호는 키 역할을 하는 `access_token`과 함께 연결된 앱 `JWT token`을 포함해야 합니다.
**참고**  
AWS Glue에서 연결당 보안 암호를 생성해야 합니다.

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

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

   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. 인증 유형을 선택하여 데이터 소스에 연결합니다.
      + `OAuth` 인증 - Productboard 앱의 `Token URL` 및 `User Managed Client Application ClientId`를 입력합니다.

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

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

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

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

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

 **사전 조건** 

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

 **지원되는 엔터티** 
+ [Abuse-reports ](https://productboard.com/developer/marketing/api/campaign-abuse/)
+ [자동화](https://productboard.com/developer/marketing/api/automation/list-automations/)
+ [캠페인](https://productboard.com/developer/marketing/api/campaigns/list-campaigns/)
+ [Click-details](https://productboard.com/developer/marketing/api/link-clickers/)
+ [Lists](https://productboard.com/developer/marketing/api/link-clickers/)
+ [회원](https://productboard.com/developer/marketing/api/list-segment-members/)
+ [Open-details](https://productboard.com/developer/marketing/api/list-members/)
+ [Segments](https://productboard.com/developer/marketing/api/list-segments/)
+ [Stores](https://productboard.com/developer/marketing/api/ecommerce-stores/list-stores/)
+ [Unsubscribed](https://productboard.com/developer/marketing/api/unsub-reports/)


| 개체 | 필터링 가능 | 제한 지원 | 정렬 기준 지원 | Select \$1 지원 | 분할 지원 | 
| --- | --- | --- | --- | --- | --- | 
|  특성  | 예 | 예 | 아니요 | 예 | 예 | 
|  Components  | 아니요 | 예 | 아니요 | 예 | 아니요 | 
|  Products  | 아니요 | 예 | 아니요 | 예 | 아니요 | 
|  Feature Statuses  | 아니요 | 예 | 아니요 | 예 | 예 | 
|  Custom Field Definitions  | 아니요 | 예 | 아니요 | 예 | 아니요 | 
|  Custom Field Values  | 예 | 예 | 아니요 | 예 | 아니요 | 

 **예제** 

```
Productboard_read = glueContext.create_dynamic_frame.from_options(
    connection_type="Productboard",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "feature",
        "API_VERSION": "1"
    }
```

 **Productboard 엔터티 및 필드 세부 정보** 
+ [Features](https://developer.productboard.com/#tag/features)
+ [Components](https://developer.productboard.com/#tag/components)
+ [Feature statuses](https://developer.productboard.com/#tag/statuses)
+ [Products](https://developer.productboard.com/#tag/products)
+ [Custom fields definitions](https://developer.productboard.com/#tag/hierarchyEntitiesCustomFields)
+ [Custom fields values](https://developer.productboard.com/#tag/hierarchyEntitiesCustomFieldsValues)

# Productboard 연결 옵션
<a name="productboard-connection-options"></a>

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

# Productboard 계정 생성
<a name="productboard-create-account"></a>

1. [Productboard 가입 페이지](https://app.productboard.com/)로 이동하여 이메일 ID와 암호를 입력한 다음 **Log me in**을 선택합니다.

1. **Account Name** 필드에 Productboard 계정의 이름을 입력한 다음 **I agree to the Privacy Policy check** 확인란을 선택합니다.

1. **Now create your workspace** 페이지의 **Workspace URL** 필드에 새 워크스페이스의 URL을 입력합니다. 이후 **Continue**를 선택하여 다음 페이지로 이동하고 나머지 세부 정보를 입력합니다.

   그러면 평가판 계정이 생성됩니다. 평가판 계정은 15일 동안 무료입니다. 평가판 기간이 만료되면 유료 플랜을 구매할 수 있습니다. 이메일 주소, 암호 및 워크스페이스 URL을 기록해 둡니다. 나중에 계정에 액세스하려면 이 정보가 필요합니다.

**`OAuth2.0` 애플리케이션 등록**

1. [Productboard login 페이지](https://login.productboard.com/?locale=en)로 이동하여 이메일 ID와 암호를 입력하고 **Log in**을 선택합니다.

1. 오른쪽 상단 모서리에서 **User** 아이콘을 선택한 다음 드롭다운 메뉴에서 **Account and billing**을 선택합니다.

1. **Extras**를 선택하고 드롭다운 메뉴에서 **Registered apps**를 선택합니다.

1. **Register An App**을 찾아 선택합니다.

1. 다음 세부 정보를 입력합니다.
   + **App name** – 앱의 이름.
   + **Company / Organization** – 회사 또는 조직의 이름.
   + **App website** – 앱의 웹사이트.
   + **Redirect URI** - 리디렉션 URI 패턴은 로그인 흐름이 완료될 때 Productboard가 리디렉션(요청된 경우)할 수 있는 URI 경로(또는 쉼표로 구분된 경로 목록)입니다. 예: `https://ap-southeast-2\\.console\\.aws\\.amazon\\.com`

1. **생성(Create)**을 선택합니다.

1. **Client ID**와 **Client Secret**이 표시됩니다. 복사하여 안전한 위치에 저장합니다. 그런 다음 **완료**를 선택합니다.
**참고**  
Client ID 및 Client Secret 문자열은 AppFlow 또는 AWS Glue를 사용할 때 이 커넥터와의 연결을 설정하는 데 사용되는 자격 증명입니다.

**CustomAuth 자격 증명 검색**

1. [Productboard 로그인 페이지](https://app.productboard.com/)로 이동하여 이메일 ID와 암호를 입력하고 **Log me in**을 선택합니다.

   홈 페이지로 리디렉션됩니다.

1. 홈 페이지에서 **Workspace Settings** > **Integrations** > **Public APIs** > **Access Token**으로 이동합니다.
**참고**  
**Public APIs** 섹션이 표시되지 않으면 계정이 Essentials 플랜을 사용 중인 것일 수 있습니다. API 토큰에 액세스하려면 Pro 플랜 이상이 필요합니다. 플랜별 기능 및 이름은 변경될 수 있습니다. 패키지에 대한 자세한 내용은 [Productboard pricing](https://www.productboard.com/pricing/)을 참조하세요.

1. **\$1**를 선택하여 새 토큰을 생성하고, 나중에 참조할 수 있도록 안전하게 저장해야 합니다.

**`OAuth2.0` 자격 증명 생성**

Productboard 커넥터를 사용한 `OAuth2.0` 인증을 활용하려면 Productboard 플랫폼에 애플리케이션을 등록하고 `Client ID` 및 `Client Secret`을 생성해야 합니다

1. [Productboard 로그인 페이지](https://app.productboard.com/)로 이동하여 이메일 ID와 암호를 입력하고 **Log me in**을 선택합니다.

1. Productboard 계정에 새 OAuth2 애플리케이션을 등록하려면 [Producboard](to register new OAuth2 application with your Productboard account) 페이지로 이동합니다.

1. 필요한 필드를 입력하고 액세스하려는 각 엔터티에 필요한 범위를 선택합니다.
**참고**  
지원되는 6개의 엔터티에 필요한 다음 네 가지 범위를 선택했습니다.

1. **리디렉션 URL**은 `https://ap-southeast-2\\.console\\.aws\\.amazon\\.com` 형식이어야 합니다.
**참고**  
Appflow 리디렉션 URL은 변경될 수 있습니다. 사용 가능한 경우 AWS Glue 플랫폼의 리디렉션 URL을 업데이트하세요.

1. **Client ID**와 **Client Secret**이 표시됩니다. 복사하여 안전한 위치에 저장합니다.

1. [How to Integrate with Productboard via OAuth2 developer](https://developer.productboard.com/docs/how-to-integrate-with-productboard-via-oauth2-developer-documentation) 설명서의 단계에 따라 `OAuth2`를 설정하고 확인할 수 있습니다.

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

다음은 Productboard 커넥터의 제한 사항입니다.
+ Productboard는 필드 기반 또는 레코드 기반 분할을 지원하지 않습니다.