

# LinkedIn에 연결
<a name="connecting-to-linkedin"></a>

LinkedIn은 다양한 후원 게시물 및 기타 방법을 통해 LinkedIn 소셜 네트워크에 대한 액세스를 제공하는 유료 마케팅 도구입니다. LinkedIn은 B2B 회사가 리드, 온라인 인식, 콘텐츠 공유 등을 구축할 수 있는 강력한 마케팅 도구입니다.

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

# AWS Glue의 LinkedIn 지원
<a name="linkedin-support"></a>

AWS Glue에서는 다음과 같이 LinkedIn을 지원합니다.

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

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

**지원되는 LinkedIn API 버전**  
**202406(2024년 6월)**

# 연결을 생성하고 사용하기 위한 API 작업이 포함된 정책
<a name="linkedin-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 콘솔의 사용자에게 해당됩니다.

# LinkedIn 구성
<a name="linkedin-configuring"></a>

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

## 최소 요구 사항
<a name="linkedin-configuring-min-requirements"></a>
+ LinkedIn 계정이 있습니다. 계정 생성에 대한 자세한 내용은 [LinkedIn 계정 생성](linkedin-create-account.md)을 참조하세요.
+ LinkedIn 계정이 API 액세스에 대해 활성화되어 있습니다.
+ LinkedIn 계정에 `OAuth2 API` 통합을 생성했습니다. 이 통합에서는 계정에 대해 인증된 직접 호출을 수행하는 경우 AWS Glue에서 데이터에 안전하게 액세스하는 데 사용하는 클라이언트 자격 증명을 제공합니다. 자세한 내용은 [LinkedIn 계정 생성](linkedin-create-account.md) 섹션을 참조하세요.

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

# LinkedIn 연결 구성
<a name="linkedin-configuring-connections"></a>

 LinkedIn은 OAuth2에 대한 `AUTHORIZATION_CODE` 권한 부여 유형을 지원합니다.

이 권한 부여 유형은 사용자를 인증하기 위해 사용자를 서드파티 권한 부여 서버로 리디렉션하는 방식에 의존하므로 '3각' `OAuth`로 간주됩니다. 사용자는 AWS Glue 콘솔을 통해 연결을 생성할 때에도 LinkedIn에서 자체 연결된 앱을 생성하고 자체 클라이언트 ID와 클라이언트 보안 암호를 제공하기로 선택할 수 있습니다. 이 시나리오에서는 여전히 LinkedIn으로 리디렉션되어 로그인하고 리소스에 액세스할 수 있는 권한을 AWS Glue에 부여합니다.

이 권한 부여 유형은 새로 고침 토큰과 액세스 토큰 둘 다 모두 생성합니다. 액세스 토큰은 생성 후 60일 후에 만료됩니다. 새로 고침 토큰을 사용하여 새 액세스 토큰을 가져올 수 있습니다.

`Authorization Code OAuth` 흐름을 위해 연결된 앱을 생성하는 방법에 대한 퍼블릭 LinkedIn 설명서는 [Authorization Code Flow (3-legged OAuth)](https://learn.microsoft.com/en-us/linkedin/shared/authentication/authorization-code-flow?toc=%2Flinkedin%2Fmarketing%2Ftoc.json&bc=%2Flinkedin%2Fbreadcrumb%2Ftoc.json&view=li-lms-2024-07&tabs=HTTPS1)를 참조하세요.

**LinkedIn 연결 구성**

1.  AWS Secrets Manager에서 다음 세부 정보로 보안 암호를 생성합니다.
   + 고객 관리형 연결된 앱의 경우 - 보안 암호는 키 역할을 하는 `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`과 함께 연결된 앱 소비자 보안 암호를 포함해야 합니다.
   + AWS 관리형 연결된 앱의 경우 - 비어 있는 보안 암호 또는 임시 값이 지정된 보안 암호입니다.
**참고**  
AWS Glue에서 연결당 보안 암호를 생성해야 합니다.

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

   1. **연결 유형**을 선택할 때 **LinkedIn**을 선택합니다.

   1. LinkedIn 환경을 제공합니다.

   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. 토큰을 넣기 위해 AWS Glue에서 이 연결에 사용할 `secretName`을 선택합니다.

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

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

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

**사전 조건** 

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

 **지원되는 엔터티** 


| 개체 | 필터링 가능 | 제한 지원 | 정렬 기준 지원 | Select \$1 지원 | 분할 지원 | 
| --- | --- | --- | --- | --- | --- | 
| Ad Accounts | 예 | 예 | 예 | 예 | 아니요 | 
| Campaigns | 예 | 예 | 예 | 예 | 아니요 | 
| Campaign Groups | 예 | 예 | 예 | 예 | 아니요 | 
| Creatives | 예 | 예 | 예 | 예 | 아니요 | 
| Ad Analytics | 예 | 아니요 | 아니요 | 예 | 아니요 | 
| Ad Analytics All AdAcocunts | 예 | 아니요 | 아니요 | 예 | 아니요 | 
| Ad Analytics All Campaigns | 예 | 아니요 | 아니요 | 예 | 아니요 | 
| Ad Analytics All CampaignGroups | 예 | 아니요 | 아니요 | 예 | 아니요 | 
| Ad Analytics All AdCreatives | 예 | 아니요 | 아니요 | 예 | 아니요 | 
| Share Statistics | 예 | 아니요 | 아니요 | 예 | 아니요 | 
| Page Statistics | 예 | 아니요 | 아니요 | 예 | 아니요 | 
| Follower Statistics | 예 | 아니요 | 아니요 | 예 | 아니요 | 

 **예제** 

```
netsuiteerp_read = glueContext.create_dynamic_frame.from_options(
    connection_type="linkedin",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "adaccounts",
        "API_VERSION": "202406"
    }
)
```


**LinkedIn 엔터티 및 필드 세부 정보**  

|  **필드 데이터 유형**  |  **지원되는 필터 연산자**  | 
| --- | --- | 
|  String  |  =  | 
|  DateTime  |  BETWEEN, =  | 
|  Numeric  |  =  | 
|  불  |  =  | 

# LinkedIn 연결 옵션
<a name="linkedin-connection-options"></a>

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

# LinkedIn 계정 생성
<a name="linkedin-create-account"></a>

**LinkedIn 앱 및 OAuth 자격 증명 생성**

1. **LinkedIn 개발자 네트워크** 페이지로 이동하여 LinkedIn 계정 자격 증명으로 로그인합니다.

1. **내 앱** 페이지로 이동하여 **애플리케이션 생성**을 선택해 새 LinkedIn 앱을 생성합니다.

1. 앱 등록 양식에 다음 세부 정보를 입력합니다.
   + **회사 이름** - 기존 회사를 선택하거나 새 회사를 생성합니다.
   + **이름** - 애플리케이션 이름을 입력합니다.
   + **설명** - 애플리케이션 설명을 입력합니다.
   + **애플리케이션 로고** - 애플리케이션 로고로 이미지 파일을 선택합니다.
   + **애플리케이션 사용** - 애플리케이션 사용을 선택합니다.
   + **웹 사이트 URL** - 애플리케이션에 대한 자세한 정보가 포함된 웹 사이트 URL을 입력합니다.
   + **비즈니스 이메일** - 비즈니스 이메일 주소를 입력합니다.
   + **회사 전화** - 회사 전화 번호를 입력합니다.
   + **LinkedIn API 사용 약관** - 읽고 동의하세요.

1. 앱 등록 양식이 완료되면 **제출**을 선택합니다.

   인증 키(클라이언트 ID와 클라이언트 보안 암호) 및 기타 관련 세부 정보가 표시되는 **인증** 페이지로 리디렉션됩니다.

1. 웹 애플리케이션에서 사용자의 LinkedIn 계정에서 사용자의 이메일 주소에 액세스해야 하는 경우 `r_emailaddress` 권한을 선택합니다. 또한 LinkedIn 애플리케이션에 대해 승인된 리디렉션 URL 지정할 수 있습니다.

**LinkedIn 계정에서 페이지 생성**

1. [LinkedIn 개발자 제품](https://developer.linkedin.com/)으로 이동합니다.

1. **LinkedIn 개발자 제품** 페이지의 오른쪽 상단에서 **내 앱**을 선택합니다.

1. **내 앱** 페이지의 오른쪽 상단에서 **앱 생성**을 선택합니다.

1. **앱 생성** 페이지의 **앱 이름** 필드에 앱 이름을 입력합니다.

1. **LinkedIn 페이지** 필드에 회사 페이지 이름 또는 URL을 입력합니다.
**참고**  
LinkedIn 페이지가 없는 경우 **새 LinkedIn 생성**을 선택하여 만들 수 있습니다.

1. **개인 정보 보호 정책 URL** 필드에 개인 정보 보호 정책 URL을 입력합니다.

1. **로고 업로드**를 선택하여 사용자가 앱으로 권한을 부여할 때 표시할 이미지를 업로드합니다.

1. **법적 계약** 섹션에서 **이 약관을 읽었으며 이에 동의합니다**를 선택합니다.

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

   새 앱이 생성되고 **내 앱** 탭에서 사용할 수 있습니다.

**LinkedIn에 캠페인 광고 게시**

1. **Campaign Manager**에 로그인합니다.

1. 기존 **캠페인 그룹**을 선택하거나 **생성**을 선택해 새로 만듭니다.

1. 목표를 선택합니다.

1. 그룹, 예산 및 일정을 선택합니다.

1. 대상 고객을 빌드합니다.

1. 광고 형식을 선택합니다.

1. 예산과 일정을 선택합니다.

1. 광고를 설정합니다.

1. 검토하고 실행합니다.

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

분석 필드 `ad_analytics_all_adAccounts`, `ad_analytics_all_campaigns`, `ad_analytics_all_campaign_groups`, `ad_analytics_all_adCreatives`의 경우 레코드를 검색하려면 필터가 필수입니다.