

# Google 検索コンソールに対する接続
<a name="connecting-to-data-google-search-console"></a>

Google 検索コンソールは、Google がサイトをどのように表示し、その存在を最適化するかをモニタリングするために、ウェブサイト所有者が利用できる無料のプラットフォームです。これには、参照元ドメイン、モバイルサイトのパフォーマンス、豊富な検索結果、トラフィックの多いクエリとページの表示が含まれます。Google 検索コンソールユーザーの場合は、Google 検索コンソールアカウントに AWS Glue を接続できます。Google 検索コンソールを ETL ジョブのデータソースとして使用できます。これらのジョブを実行して、Google 検索コンソールから AWS サービスまたはその他のサポートされているアプリケーションにデータを転送します。

**Topics**
+ [Google 検索コンソールの AWS Glue サポート](google-search-console-support.md)
+ [接続を作成および使用するための API オペレーションを含むポリシー](google-search-console-configuring-iam-permissions.md)
+ [Google 検索コンソールの設定](google-search-console-configuring.md)
+ [Google 検索コンソール接続の設定](google-search-console-configuring-connections.md)
+ [Google 検索コンソールエンティティからの読み取り](google-search-console-reading-from-entities.md)
+ [Google 検索コンソールの接続オプション](google-search-console-connection-options.md)
+ [Google 検索コンソールの制限](google-search-console-limitations.md)

# Google 検索コンソールの AWS Glue サポート
<a name="google-search-console-support"></a>

AWS Glue は、次のように Google 検索コンソールをサポートします。

**ソースとしてサポートされていますか?**  
はい。AWS Glue ETL ジョブを使用して、Google 検索コンソールからデータをクエリできます。

**ターゲットとしてサポートされていますか?**  
いいえ。

**サポートされている Google 検索コンソールの API バージョン**  
次の Google 検索コンソールの 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 マネージメントコンソールを使用するときは、AWS Glue リソースへのフルアクセスを許可します。このポリシーで指定されたリソースの命名規則に従った場合、ユーザーは完全なコンソール機能を使用できます。このポリシーは、通常 AWS Glue コンソールのユーザーにアタッチされています。

# Google 検索コンソールの設定
<a name="google-search-console-configuring"></a>

AWS Glue を使用して Google 検索コンソールからデータを転送できるようにするには、次の要件を満たす必要があります。

## 最小要件
<a name="google-search-console-configuring-min-requirements"></a>

以下に、最小要件を示します。
+ Google 検索コンソールアカウントがある。
+ Google Cloud Platform のアカウントと Google Cloud プロジェクトがある。
+ Google Cloud プロジェクトで、Google 検索コンソール API を有効にしている。
+ Google Cloud プロジェクトで、外部ユーザー用の OAuth 同意画面を設定している。詳細については、Google Cloud Platform コンソールヘルプの「[OAuth 同意画面の設定](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 検索コンソールアカウントに AWS Glue を接続する準備が整います。一般的な接続では、Google 検索コンソールで他に何もする必要はありません。

# Google 検索コンソール接続の設定
<a name="google-search-console-configuring-connections"></a>

Google 検索コンソールは、OAuth2 の AUTHORIZATION\$1CODE グラントタイプをサポートしています。グラントタイプは、AWS Glue が Google 検索コンソールと通信してデータへのアクセスをリクエストする方法を決定します。
+ このグラントタイプは、ユーザーを認証するためにサードパーティーの認証サーバーにユーザーをリダイレクトすることから、「three-legged」の OAuth と見なされます。AWS Glue コンソール経由で接続を作成するときに使用されます。
+ ユーザーは、Google 検索コンソールで独自の接続アプリを作成し、AWS Glue コンソールを介して接続を作成するときに独自のクライアント ID とクライアントシークレットを指定することを選択できます。このシナリオでは、引き続き Google 検索コンソールにリダイレクトされてログインし、リソースへアクセスするために AWS Glue を承認します。
+ このグラントタイプは、更新トークンとアクセストークンになります。アクセストークンの有効期間は短く、更新トークンを使用してユーザーとやり取りすることなく自動的に更新される場合があります。
+ 認可コード OAuth フロー用の接続アプリの作成に関する Google 検索コンソールの公開ドキュメントについては、「[OAuth 2.0 を使用した Google API へのアクセス](https://developers.google.com/identity/protocols/oauth2)」を参照してください。

Google 検索コンソール接続を設定するには:

1. AWS Secrets Manager で、次の詳細を含むシークレットを作成します。

   1. カスタマーマネージド接続アプリケーションの場合、シークレットには、`USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` を使用して接続されたアプリケーションのコンシューマーシークレットをキーとして含める必要があります。

   1. 注: AWS Glue で接続にシークレットを作成する必要があります。

1. AWS Glue Glue Studio で、以下の手順に従って **[データ接続]** の下に接続を作成します。

   1. **[接続タイプ]** を選択する際に、[Google 検索コンソール] を選択します。

   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 検索コンソールエンティティからの読み取り
<a name="google-search-console-reading-from-entities"></a>

**前提条件**

読み取り元の Google 検索コンソールオブジェクト。オブジェクト名が必要になります。

**ソースに対応するエンティティ**:


| エンティティ | フィルタリング可能 | 制限をサポートする | Order By をサポートする | Select \$1 をサポートする | パーティション分割をサポートする | 
| --- | --- | --- | --- | --- | --- | 
| [分析] を選択する | はい | あり | なし | あり | なし | 
| サイト | なし | なし | なし | あり | なし | 
| サイトマップ | なし | なし | なし | あり | なし | 

**例**:

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

**Google 検索コンソールのエンティティとフィールドの詳細**:

Google 検索コンソールでは、サポートされているエンティティのメタデータを動的に取得するためのエンドポイントが提供されます。したがって、オペレータのサポートはデータ型レベルでキャプチャされます。

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

**注記**  
フィルターの有効な値の更新リストについては、「[Google 検索コンソール](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 検索コンソールの接続オプション
<a name="google-search-console-connection-options"></a>

Google 検索コンソールの接続オプションは次のとおりです。
+ `ENTITY_NAME`(文字列) – (必須) 読み取りに使用されます。Google 検索コンソールのオブジェクトの名前。
+ `API_VERSION`(文字列) – (必須) 読み取りに使用されます。使用する Google 検索コンソールの Rest API バージョン。
+ `SELECTED_FIELDS`(List<String>) – Default: empty(SELECT \$1). 読み込みに使用されます。オブジェクトに選択する列です。
+ `FILTER_PREDICATE`(文字列) – デフォルト:「start\$1end\$1date が <現在の日付から 30 日前> と <昨日: つまり、現在の日付から 1 日前> の間」。読み込みに使用されます。Spark SQL 形式である必要があります。
+ `QUERY`(文字列) – デフォルト:「start\$1end\$1date が <現在の日付から 30 日前> と <昨日: つまり、現在の日付から 1 日前> の間」。読み取りに使用されます。完全な Spark SQL クエリです。
+ `INSTANCE_URL`(文字列) - 読み取りに使用されます。有効な Google 検索コンソールインスタンス URL。

# Google 検索コンソールの制限
<a name="google-search-console-limitations"></a>

Google 検索コンソールの制限事項または注意事項は次のとおりです。
+ Google 検索コンソールでは、API の使用制限が適用されます。詳細については、「[使用制限](https://developers.google.com/webmaster-tools/limits)」を参照してください。
+ `Search Analytics` エンティティにフィルタが渡されない場合、API は、指定されたデフォルトの日付範囲内のサイト全体のすべてのクリック、インプレッション、CTR、およびその他のデータを合計し、単一のレコードとして表示します。
+ データを小さなセグメントに分割するには、クエリにディメンションを導入する必要があります。ディメンションは、データをセグメント化する方法を API に伝えます。
  + たとえば、`filterPredicate: dimensions="country"` を追加すると、指定した期間中にサイトがトラフィックを受信した国ごとに 1 つのレコードを取得します。
  + 複数のディメンションを渡す例: `filterPredicate: dimensions="country" AND dimensions="device" AND dimensions="page"`。この場合、これら 3 つのディメンションの一意の組み合わせごとに 1 行がレスポンスに表示されます。
+ デフォルト値は、`start_end_date` および `dataState` フィールドに設定されます。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/google-search-console-limitations.html)