データフィードを使用すると、レストラン、サービス、メニューを Ordering End-to-End で利用できるようになります。
このドキュメントでは、サンドボックス インベントリと本番環境インベントリをホストし、バッチ取り込みを使用して注文のエンドツーエンドでインベントリを更新する方法について説明します。
データフィード環境
統合開発には、次の 3 つのデータフィード環境を使用できます。
フィード環境 | 説明 | オフライン ストアへの |
---|---|---|
サンドボックス | フィードの開発用のテスト環境。 | 必須 |
本番環境 | リリースする広告枠の本番環境。 | 必須 |
データフィードのホスティング
オーダーリング エンドツーエンドでサンドボックスと本番環境のデータフィードをバッチ取り込みで処理するには、データフィードのファイルを Google Cloud Storage、Amazon S3、または HTTPS にホストし、サイトマップを指定する必要があります。
サンドボックス環境と本番環境のデータフィードを別々にホストすることをおすすめします。このアプローチでは、変更を本番環境にデプロイする前に、サンドボックス フィード環境で開発とテストを行うことができます。
たとえば、ホスティング オプションとして Google Cloud Storage を使用する場合、パスは次のようになります。
- サンドボックス フィード:
gs://foorestaurant-google-feed-sandbox/
- 製品フィード:
gs://foorestaurant-google-feed-prod/
広告枠をホストする手順は次のとおりです。
- データフィード ファイルを生成します。
- ホスティング ソリューションを選択します。
- データフィードをホストする。
- データフィード ファイルが定期的に更新されていることを確認してください。本番環境のデータフィードは毎日更新する必要があります。
広告枠フィードの作成方法について詳しくは、Restaurant
、Service
、Menu
エンティティのドキュメントと、データフィードを作成するをご覧ください。
データフィード ファイルに関するガイドライン
各ファイル(複数のエンティティを含めることができます)は 200 MB を超えないようにしてください。最上位エンティティ Restaurant
、Service
、Menu
とその子エンティティの合計サイズは 4 MB を超えてはなりません。
ホスティング ソリューションを選択する
次の表に、データフィードのホスティング オプションと、それらのホストが Ordering End-to-End と連携する仕組みを示します。
Amazon S3 | Google Cloud Storage | サイトマップを使用した HTTPS | |
---|---|---|---|
認証情報とアクセス |
Google に次の情報を提供します。
S3 バケットには次の情報が含まれている必要があります。
|
本番環境とサンドボックスのバケット ディレクトリと Google コンサルタントから提供されたサービス アカウントを、Google Cloud Storage バケットの読み取り専用ユーザーとして追加します。 Google Cloud Storage(GCS)のアクセスを制御する方法については、Google Cloud Platform コンソール: バケット権限の設定をご覧ください。 GCS バケットには次の情報が含まれている必要があります。
|
Google に次の情報を提供します。
|
Google が取得する必要があるファイルを認識する仕組み | バケット内のすべてのファイルのディレクトリ リスト。 | バケット内のすべてのファイルのディレクトリ リスト。 | サイトマップに記載されているファイルの個々の URL。 |
ファイルの取得準備が整ったことを Google が認識する仕組み | データフィードの生成が完了したら、marker.txt ファイルを最新のタイムスタンプで更新します。 |
データフィードの生成が完了したら、marker.txt ファイルを最新のタイムスタンプで更新します。 |
データフィードの生成が完了したら、sitemap.xml のレスポンス ヘッダー last-modified を最新のタイムスタンプで更新します。 |
ファイルの上限 |
ファイルの最大数: 100,000 個。 Amazon S3 バケット内のファイルの合計数が 100,000 未満である必要があります。 |
ファイルの最大数: 100,000 個。 Google Cloud Storage バケットに保存されているファイルの合計数が 100,000 個未満である必要があります。 |
ファイルの最大数: 100,000 個。 サイトマップ XML ファイル内のファイルパスの数は 100,000 以下にする必要があります。 |
バッチ取り込み用にデータフィードを接続する
フィードをホストしたら、Actions Center でプロジェクトに接続する必要があります。本番環境フィードの初期構成は、[オンボーディング タスク] ページで行うことができます。後で、管理ロールを持つポータル ユーザーは、[設定> フィード] ページから本番環境とサンドボックスのフィード構成をいつでも更新できます。サンドボックス環境は開発とテストを目的として使用し、本番環境フィードはユーザーに表示します。
Amazon S3 でデータフィードをホストしている場合
- Actions Center で、[Configuration] > [Feeds] に移動します。
-
[編集] をクリックし、[フィードを更新] フォームに入力します。
- フィード配信方法: [Amazon S3] に設定します。
- マーカー ファイル:
marker.txt
ファイルの URL を指定します。 - データファイル: データフィードを含む S3 バケットの URL を指定します。
- Access ID: S3 リソースからの読み取り権限を持つ IAM アクセスキー ID を入力します。
- アクセスキー: S3 リソースからの読み取り権限を持つ IAM シークレット アクセスキーを入力します。
- [送信] をクリックします。
- 1 ~ 2 時間後に、バッチ取り込みでフィード ファイルが取得されたかどうかを確認します。
Google Cloud Storage でデータフィードをホストする場合
- Actions Center で、[Configuration] > [Feeds] に移動します。
-
[編集] をクリックし、[フィードを更新] フォームに入力します。
- フィード配信方法: [Google Cloud Storage] に設定します。
- マーカー ファイル:
marker.txt
ファイルの URL を指定します。 - データファイル: データフィードを含む GCS バケットの URL を指定します。
- [送信] をクリックします。
- GCS バケットにアクセスするためのサービス アカウントが作成されます。アカウント名は、オンボーディング タスクの完了後に [設定] > [フィード] で確認できます。このサービス アカウントには、「ストレージのレガシー オブジェクト読み取り」ロールが必要です。このロールは、Google Cloud コンソールの IAM ページでサービス アカウントに付与できます。
- 1 ~ 2 時間後に、バッチ取り込みでフィード ファイルが取得されたかどうかを確認します。
データフィードを HTTPS でホストしている場合
- Actions Center で、[Configuration] > [Feeds] に移動します。
-
[編集] をクリックし、[フィードを更新] フォームに入力します。
- フィード配信方法: [HTTPS] に設定します。
- サイトマップ ファイル:
sitemap.xml
ファイルの URL を指定します。 - ユーザー名: HTTPS サーバーにアクセスするためのユーザー名の認証情報を入力します。
- パスワード: HTTPS サーバーにアクセスするためのパスワードを入力します。
- [送信] をクリックします。
- 1 ~ 2 時間後に、バッチ取り込みでフィード ファイルが取得されたかどうかを確認します。
パスの例
次の表に、各ホスティング オプションのパスの例を示します。
Amazon S3 | Google Cloud Storage | サイトマップを使用した HTTPS | |
---|---|---|---|
パス | s3://foorestaurant-google-feed-sandbox/ |
gs://foorestaurant-google-feed-sandbox/ |
https://sandbox-foorestaurant.com/sitemap.xml |
マーカー ファイル | s3://foorestaurant-google-feed-sandbox/marker.txt |
gs://foorestaurant-google-feed-sandbox/marker.txt |
該当なし |
HTTPS ホスティング用のサイトマップ
サイトマップを定義する際は、次のガイドラインに従ってください。
- サイトマップのリンクは、ファイル自体を参照する必要があります。
- サイトマップに独自のドメイン名ではなくクラウド プロバイダへの参照が含まれている場合は、URL の先頭(
https://www.yourcloudprovider.com/your_id
など)が安定していて、バッチジョブに固有であることを確認してください。 - 部分的なサイトマップ(データの部分的なアップロードの場合など)はアップロードしないでください。サイトマップに登録されているファイルのみが取り込まれるため、広告枠の在庫が減少し、フィード取り込みがブロックされる可能性があります。
- サイトマップで参照されているファイルのパスが変更されていないことを確認します。たとえば、サイトマップでは、今日
https://www.yourcloudprovider.com/your_id/10000.json
を参照し、明日はhttps://www.yourcloudprovider.com/your_id/20000.json
を参照しないでください。
サイトマップの例
データフィード ファイルを提供する sitemap.xml
ファイルの例を次に示します。
例 1: 販売者別にグループ化されたエンティティ(推奨)。
XML
<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>https://your_fulfillment_url.com/restaurant_1.ndjson</loc> <lastmod>2018-06-11T10:46:43+05:30</lastmod> </url> <url> <loc>https://your_fulfillment_url.com/restaurant_2.ndjson</loc> <lastmod>2018-06-11T10:46:43+05:30</lastmod> </url> <url> <loc>https://your_fulfillment_url.com/restaurant_3.ndjson</loc> <lastmod>2018-06-11T10:46:43+05:30</lastmod> </url> </urlset>
例 2: タイプ別にグループ化されたエンティティ。
XML
<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>https://your_fulfillment_url.com/restaurant.json</loc> <lastmod>2018-06-11T10:46:43+05:30</lastmod> </url> <url> <loc>https://your_fulfillment_url.com/menu.json</loc> <lastmod>2018-06-11T10:46:43+05:30</lastmod> </url> <url> <loc>https://your_fulfillment_url.com/service.json</loc> <lastmod>2018-06-11T10:46:43+05:30</lastmod> </url> </urlset>
データフィードを更新する
データフィードが接続されると、Google は 1 時間に 1 回更新を確認しますが、marker.txt
ファイルまたは sitemap.xml
ファイルが変更された場合にのみ、すべてのデータフィードを取り込みます。在庫の古さを防ぐため、データフィードを 1 日 1 回更新することをおすすめします。
データフィードが変更され、バッチ取り込みの準備ができていることを指定するには、marker.txt
ファイルの last-modified
オブジェクト メタデータ フィールド(GCP と S3 の場合)または sitemap.xml
ファイルの last-modified
レスポンス ヘッダーを更新します。Google はこれらの値を使用して、データフィードの更新頻度を判断します。
バッチフィードが取り込まれると、
- 現在のエンドツーエンドの注文在庫に存在せず、エラーのない新しいエンティティが挿入されます。
-
広告枠にすでに存在し、取り込み時にエラーが発生しておらず、
dateModified
が現在のエントリより新しいエンティティ、またはdateModified
がない場合でもフィード取り込みの開始時間が現在のエントリより新しいエンティティは更新されます。それ以外の場合は古いエンティティとしてマークされます。 - 以前のフィードに含まれていたエンティティが、処理中のバッチフィードに含まれていない場合、フィードにファイルレベルのエラーがなければ、そのエンティティは削除されます。
タイムスタンプまたは last-modified
レスポンス ヘッダーは、すべてのデータフィード ファイルが生成されて更新された後にのみ更新する必要があります。データフィードを更新するバッチジョブを、1 日に 1 回のみ実行するように制限します。または、各バッチジョブの間に 3 時間以上の間隔を空けてください。この手順を行わないと、古いファイルが取得される可能性があります。