

# Google Search Console에 연결
<a name="connecting-to-data-google-search-console"></a>

Google Search Console은 웹사이트 소유자가 Google이 사이트를 어떻게 보는지 모니터링하고 유기적 존재감을 최적화하기 위해 사용할 수 있는 무료 플랫폼입니다. 여기에는 참조 도메인, 모바일 사이트 성능, 검색 결과, 트래픽이 가장 많은 쿼리 및 페이지 보기가 포함됩니다. Google Search Console 사용자인 경우 Google Search Console 계정에 AWS Glue를 연결할 수 있습니다. Google Search Console을 ETL 작업에서의 데이터 소스로 사용할 수 있습니다. 이러한 작업을 실행하여 Google Search Console에서 AWS 서비스 또는 기타 지원되는 애플리케이션으로 데이터를 전송합니다.

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

# AWS Glue의 Google Search Console 지원
<a name="google-search-console-support"></a>

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

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

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

**지원되는 Google Search Console API 버전**  
다음 Google Search Console API 버전이 지원됩니다.
+ v3

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

# Google Search Console 구성
<a name="google-search-console-configuring"></a>

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

## 최소 요구 사항
<a name="google-search-console-configuring-min-requirements"></a>

다음은 최소 요구 사항입니다.
+ Google Search Console 계정이 있습니다.
+ Google Cloud Platform 관리자 계정을 만들고 Google Cloud 프로젝트를 생성했습니다.
+ Google Cloud 프로젝트에서 Google Search Console API를 활성화했습니다.
+ Google Cloud 프로젝트에서 외부 사용자를 위한 OAuth 동의 화면을 구성했습니다. 자세한 내용은 Google Cloud Platform Console 도움말의 [Setting up your OAuth consent screen](https://support.google.com/cloud/answer/10311615)을 참조하세요.
+ Google Cloud 프로젝트에서 OAuth 2.0 클라이언트 ID를 구성했습니다. AWS Glue가 계정에 인증된 직접 호출을 할 때 데이터에 안전하게 액세스하는 데 사용하는 클라이언트 자격 증명은 [OAuth 2.0 설정](https://support.google.com/cloud/answer/6158849)을 참조하세요.

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

# Google Search Console 연결 구성
<a name="google-search-console-configuring-connections"></a>

Google Search Console에서는 OAuth2에 대한 AUTHORIZATION\$1CODE 권한 부여 유형을 지원합니다. 권한 부여 유형은 AWS Glue에서 Google Search Console과 통신하여 데이터에 대한 액세스를 요청하는 방법을 결정합니다.
+ 이 권한 부여 유형은 사용자를 인증하기 위해 사용자를 서드파티 권한 부여 서버로 리디렉션하는 방식에 의존하므로 '3각' OAuth로 간주됩니다. AWS Glue 콘솔을 통해 연결을 생성할 때 사용됩니다.
+ 사용자는 여전히 AWS Glue 콘솔을 통해 연결을 생성할 때에도 Google Search Console에서 자체 연결된 앱을 생성하고 자체 클라이언트 ID와 클라이언트 보안 암호를 제공하기로 선택할 수 있습니다. 이 시나리오에서는 여전히 Google Search Console로 리디렉션되어 로그인하고 리소스에 액세스할 수 있는 권한을 AWS Glue에 부여합니다.
+ 이 권한 부여 유형은 새로 고침 토큰과 액세스 토큰을 생성합니다. 액세스 토큰은 수명이 짧으며 새로 고침 토큰을 사용하여 사용자 상호 작용 없이 자동으로 새로 고칠 수 있습니다.
+ 권한 부여 코드 OAuth 흐름을 위한 연결된 앱 생성에 대한 퍼블릭 Google Search Console 설명서는 [Using OAuth 2.0 to Access Google APIs](https://developers.google.com/identity/protocols/oauth2)를 참조하세요.

Google Search Console 연결을 구성하는 방법:

1. AWS Secrets Manager에서 다음 세부 정보로 보안 암호를 생성합니다.

   1. 고객 관리형 연결된 앱의 경우 보안 암호는 키 역할을 하는 `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`과 함께 연결된 앱 소비자 보안 암호를 포함해야 합니다.

   1. 참고: AWS Glue에서 연결의 보안 암호를 생성해야 합니다.

1. AWS Glue Glue Studio의 **데이터 연결**에서 아래 단계에 따라 연결을 생성하세요.

   1. **연결 유형**을 선택할 때 Google Search Console을 선택합니다.

   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`을 읽을 수 있는 권한을 부여합니다.

# Google Search Console 엔터티에서 읽기
<a name="google-search-console-reading-from-entities"></a>

**사전 조건**

읽으려는 Google Ads 객체입니다. 객체 이름이 필요합니다.

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


| 개체 | 필터링 가능 | 제한 지원 | 정렬 기준 지원 | Select \$1 지원 | 분할 지원 | 
| --- | --- | --- | --- | --- | --- | 
| Search Analytics | 예 | 예 | 아니요 | 예 | 아니요 | 
| Sites | 아니요 | 아니요 | 아니요 | 예 | 아니요 | 
| Sitemaps | 아니요 | 아니요 | 아니요 | 예 | 아니요 | 

**예시:**

```
googleSearchConsole_read = glueContext.create_dynamic_frame.from_options(
    connection_type="googlesearchconsole",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v3"
    }
```

**Google Search Console 엔터티 및 필드 세부 정보**:

Google Search Console에서는 지원되는 엔터티에 대해 메타데이터를 동적으로 가져오도록 엔드포인트를 제공합니다. 따라서 운영자 지원은 데이터 유형 수준에서 캡처됩니다.

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

**참고**  
필터에 대한 유효한 값의 업데이트된 목록은 [Google Search Console](https://developers.google.com/webmaster-tools/v1/searchanalytics/query) API 문서를 참조하세요.  
`start_end_date` 필드는 `start_date` 및 `end_date`의 조합입니다.

## 분할 쿼리
<a name="google-search-console-reading-partitioning-queries"></a>

필터 기반 분할 및 레코드 기반 분할은 지원되지 않습니다.

# Google Search Console 연결 옵션
<a name="google-search-console-connection-options"></a>

다음은 Google Search Console의 연결 옵션입니다.
+ `ENTITY_NAME`(문자열) - (필수) 읽기에 사용됩니다. Google Search Console에서의 객체 이름입니다.
+ `API_VERSION`(문자열) - (필수) 읽기에 사용됩니다. 사용하려는 Google Search Console Rest API 버전입니다.
+ `SELECTED_FIELDS`(List<String>) - 기본값: 비어 있습니다(SELECT \$1). 읽기에 사용됩니다. 객체에 대해 선택할 열.
+ `FILTER_PREDICATE`(문자열) - 기본값: 'start\$1end\$1date <현재 날짜로부터 30일 전>과 <어제: 즉, 현재 날짜로부터 1일 전> 사이'. 읽기에 사용됩니다. Spark SQL 형식이어야 합니다.
+ `QUERY`(문자열) - 기본값: 'start\$1end\$1date <현재 날짜로부터 30일 전>과 <어제: 즉, 현재 날짜로부터 1일 전> 사이' 읽기에 사용됩니다. 전체 Spark SQL 쿼리.
+ `INSTANCE_URL`(문자열) - 읽기에 사용됩니다. 유효한 Google Search Console 인스턴스 URL입니다.

# Google Search Console 제한 사항
<a name="google-search-console-limitations"></a>

다음은 Google Search Console의 제한 사항 또는 참고 사항입니다.
+ Google Search Console은 API에 사용량 한도를 적용합니다. 자세한 내용은 [사용 제한](https://developers.google.com/webmaster-tools/limits)을 참조하세요.
+ `Search Analytics` 엔터티에 대한 필터가 전달되지 않으면 API는 지정된 기본 날짜 범위 내에 전체 사이트의 모든 클릭, 노출, CTR 및 기타 데이터를 합산하여 단일 레코드로 표시합니다.
+ 데이터를 더 작은 세그먼트로 분류하려면 쿼리에 차원을 도입해야 합니다. 차원은 API에 데이터를 분할하는 방법을 알려줍니다.
  + 예를 들어, `filterPredicate: dimensions="country"`를 추가하면 지정된 기간 동안 사이트가 트래픽을 수신한 각 국가에 대해 하나의 레코드를 가져옵니다.
  + 여러 차원을 전달하는 예: `filterPredicate: dimensions="country" AND dimensions="device" AND dimensions="page"`. 이 경우 이러한 세 가지 차원의 고유한 조합마다 응답에 행이 하나씩 표시됩니다.
+ 기본값은 `start_end_date` 및 `dataState` 필드에 설정됩니다.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/google-search-console-limitations.html)