Serverlose Integrationslösung auf der Grundlage von Cloud Functions und Pub/Sub bereitstellen

In dieser Anleitung wird beschrieben, wie Sie eine Datenintegrationslösung einrichten und testen können, die auf den in Serverlose Integrationslösung für die Google Marketing Platform beschriebenen Konzepten beruht.

Ein Praxisbeispiel für diese serverlose Lösung finden Sie in einer Open Source-Demo auf GitHub. Die Lösung wird mit APIs und einem Shell-Skript umgesetzt, das Sie bei der Einrichtung in Google Cloud unterstützt.

Diese Anleitung wendet sich an Data Engineers oder Architects, die die Einbindung von Daten in Zielsysteme automatisieren und dazu APIs oder andere programmatische Einbindungsoptionen wie SFTP Upload nutzen möchten.

Ziele

  • Serverlose Integrationslösung bereitstellen
  • Einbindung in Zielsysteme für Ziel-APIs einrichten
  • Testen der Lösung durch Laden einer CSV-Datei in Google Tabellen

Kosten

In dieser Anleitung werden die folgenden kostenpflichtigen Komponenten von Google Cloud verwendet:

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen. Neuen Google Cloud-Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

Nach Abschluss dieser Anleitung können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.

Hinweis

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.

  4. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  5. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.

  6. Cloud Shell öffnen
  7. Zu Cloud Shell

Lösung installieren

  1. Klonen Sie in Cloud Shell das Repository, das den für diese Anleitung benötigten Code enthält:

    git clone https://github.com/GoogleCloudPlatform/cloud-for-marketing.git
    
  2. Führen Sie das Installationsskript aus:

    cd cloud-for-marketing/marketing-analytics/activation/gmp-googleads-connector; chmod a+x deploy.sh; ./deploy.sh
    

    Das Skript führt verschiedene Prozesse aus, es prüft zum Beispiel die Umgebung und stellt die Abhängigkeiten zusammen.

  3. Wenn Sie dazu aufgefordert werden, geben Sie die Cloud-Projekt-ID ein, die Sie für diese Anleitung nutzen möchten.

  4. Wählen Sie die Region aus, in der Sie die Cloud Functions-Funktion bereitstellen und die Daten in Cloud Storage speichern möchten, zum Beispiel us-east1.

  5. Wählen Sie die integrierten APIs aus, die Sie nutzen möchten, oder drücken Sie Enter, um alle auszuwählen. Diese Lösung arbeitet mit den folgenden Ziel-APIs:

    • Google Analytics Measurement Protocol
    • Google Analytics Management API (Data Import)
    • Campaign Manager Conversions Upload
    • SFTP Upload zum Hochladen von Geschäftsdaten auf Search Ads 360
    • Google Sheets API für geplante Uploads für Google Ads-Conversions aus Google Tabellen
    • Search Ads 360 Conversions Upload

    Nehmen Sie auch die Google Sheets API auf, weil Sie die Lösung nach der Installation damit testen. Es wird geprüft, ob die für die Installation erforderlichen Berechtigungen vorhanden sind. Falls nicht, fordern Sie die fehlenden Berechtigungen von Ihrem Administrator an und führen Sie das Skript noch einmal aus.

  6. Geben Sie den Namen des Cloud Storage-Buckets an, in dem Ihre Daten gespeichert werden sollen. Ist der Bucket noch nicht vorhanden, wählen Sie eine Region aus und der Bucket wird vom Skript erstellt. Es wird empfohlen, die Standardregion zu verwenden, die der Region entspricht, in der Cloud Functions bereitgestellt wird.

  7. Geben Sie einen Cloud Storage-Ordner für das Monitoring durch die Lösung an oder drücken Sie Enter, um den Standardordner auszuwählen.

  8. Geben Sie ein Präfix für Pub/Sub-Themen und Abonnements ein oder drücken Sie Enter, um das Standardpräfix zu verwenden.

  9. Wenn Sie dazu aufgefordert werden, geben Sie Y ein, um Ihre Einstellungen zu bestätigen und in einer config.json-Datei zu speichern.

    Die Pub/Sub-Themen und Abonnements werden erstellt.

  10. Wenn für die APIs, die Sie aktiviert haben, ein Dienstkonto erforderlich ist, geben Sie den Namen eines Dienstkontos an und bestätigen Sie dann, dass Sie die Schlüsseldatei herunterladen möchten.

  11. Nachdem Cloud Functions automatisch bereitgestellt wurde, zeigt das Skript an, ob die Firestore- oder Datastore-Instanz bereit ist. Falls sie nicht bereit ist, drucken Sie die Anleitung zur Initialisierung von Firestore aus.

Daten vorbereiten

Nachdem Sie die Lösung installiert haben, können Sie die Daten für das Zielsystem vorbereiten.

Dateiformate

Die in diese Lösung eingebundenen APIs erfordern in einigen Fällen bestimmte Dateiformate:

  • SFTP Upload hat keine Formatanforderungen. Die Datei wird, unabhängig von ihrem Format, über SFTP auf den Server hochgeladen.
  • Die Google Analytics Management API (Data Import) und die Google Sheets API erfordern CSV-Dateien.
  • Bei allen anderen APIs erwartet das System JSON-Dateien (NDJSON, durch Zeilenumbruch getrennt). Jede Zeile ist ein gültiger JSON-String. Siehe zum Beispiel BigQuery-Exportformate.

API-Konfigurationen

Unterschiedliche APIs haben unterschiedliche Konfigurationen und eine API kann auch mehr als eine Konfiguration für verschiedene Verwendungen haben. Daher sind die Konfigurationen nach APIs gegliedert und bilden ein einzelnes JSON-Objekt in der Datei config_api.json. Die folgende Auflistung aus der JSON-Vorlagendatei im GitHub-Repository dieser Anleitung zeigt, wie die Konfigurationen strukturiert sind.

{
  "CM": {
    "foo": {
      "cmAccountId": "[YOUR-DCM-ACCOUNT-ID]",
      "cmConfig": {
        "idType": "encryptedUserId",
        "conversion": {
          "floodlightConfigurationId": "[YOUR-FL-CONFIG-ID]",
          "floodlightActivityId": "[YOUR-FL-ACTIVITY-ID]",
          "quantity": 1
        },
        "customVariables": [
          "[YOUR-U-VARIABLES-NAME-1]", "[YOUR-U-VARIABLES-NAME-2]"
        ],
        "encryptionInfo": {
          "encryptionEntityId": "[YOUR-ENCRYPTION-ID]",
          "encryptionEntityType": "DCM_ADVERTISER",
          "encryptionSource": "AD_SERVING"
        }
      }
    }
  },
  "GA": {
    "bar": {
      "dataImportHeader": "[YOUR-DATA-IMPORT-HEADER]",
      "gaConfig": {
        "accountId": "[YOUR-GA-ACCOUNT-ID]",
        "webPropertyId": "[YOUR-WEB-PROPERTY-ID]",
        "customDataSourceId": "[YOUR-CUSTOM-DATASOURCE-ID]"
      }
    }
  },
  "MP": {
    "baz": {
      "mpConfig":{
        "v": "1",
        "t": "transaction",
        "ni": "1",
        "dl": "[YOUR-SOMETHING-URL]",
        "tid": "[YOUR-WEB-PROPERTY-ID]"
      }
    }
  },
  "SFTP": {
    "qux": {
      "sftp":{
        "host": "[YOUR-SFTP-HOST]",
        "port": "[YOUR-SFTP-PORT]",
        "username": "[YOUR-SFTP-USERNAME]",
        "password": "[YOUR-SFTP-PASSWORD]"
      }
    }
  },
  "GS": {
    "foo": {
      "spreadsheetId": "[YOUR-SPREADSHEET-ID]",
      "sheetName": "[YOUR-SHEET-NAME]",
      "sheetHeader": "[ANYTHING-PUT-AHEAD-OF-CSV]",
      "pasteData": {
        "coordinate": {
          "rowIndex": 0,
          "columnIndex": 0
        },
        "delimiter": ","
      }
    }
  },
  "SA": {
    "bar": {
      "saConfig": {
        "currencyCode": "[YOUR-CURRENCY-CODE]",
        "type": "TRANSACTION",
        "segmentationType": "FLOODLIGHT",
        "segmentationId": "[YOUR-SEGMENTATION-ID]",
        "state": "ACTIVE"
      },
      "availabilities": [
        {
          "agencyId": "[YOUR-AGENCY-ID]",
          "advertiserId": "[YOUR-ADVERTISER-ID]",
          "segmentationType": "FLOODLIGHT",
          "segmentationId": "[YOUR-SEGMENTATION-ID]"
        }
      ]
    }
  },
  "ACLC": {
    "foo" : {
      "customerId": "[YOUR-GOOGLE-ADS-ACCOUNT-ID]",
      "loginCustomerId": "[YOUR-LOGIN-GOOGLE-ADS-ACCOUNT-ID]",
      "developerToken": "[YOUR-GOOGLE-ADS-DEV-TOKEN]",
      "adsConfig": {
        "conversion_action": "[YOUR-CONVERSION-ACTION-NAME]",
        "conversion_value": "[YOUR-CONVERSION-VALUE]",
        "currency_code": "[YOUR-CURRENCY-CODE]"
      }
    }
  },
  "ACM": {
    "foo" : {
      "developerToken": "[YOUR-GOOGLE-ADS-DEV-TOKEN]",
      "customerMatchConfig": {
        "customer_id": "[YOUR-GOOGLE-ADS-ACCOUNT-ID]",
        "login_customer_id": "[YOUR-LOGIN-GOOGLE-ADS-ACCOUNT-ID]",
        "list_id": "[YOUR-CUSTOMER-MATCH-LIST-ID]",
        "list_type": "[YOUR-CUSTOMER-MATCH-LIST-TYPE],
        "operation": "create|remove"
      }
    }
  }
}

Sie können die Vorlagendatei in config_api.json umbenennen, nur die Bereiche der Ziel-APIs unverändert lassen und die Konfigurationsdetails bearbeiten. Wenn Sie mehr als eine Konfiguration haben, kopieren Sie die Konfigurationen und geben Sie ihnen unterschiedliche Namen. Aktualisieren Sie dann die Konfigurationen in Firestore:

./deploy.sh update_api_config

Dateinamenskonvention

Für mehr Flexibilität mit verschiedenen APIs und Konfigurationen verwenden wir in dieser Lösung eine Namenskonvention für eingehende Dateien. Die Dateinamen sollten dem Muster API[X] und config[Y] entsprechen.

  • X steht für die Codes der Ziel-APIs. In dieser Lösung kann X durch Folgendes ersetzt werden:
    • MP: Google Analytics Measurement Protocol
    • GA: Google Analytics Management API (Data Import)
    • CM: DCM/DFA Reporting and Trafficking API
    • SFTP: SFTP Upload
    • GS: Google Sheets API
    • SA: Search Ads 360 API
  • Y ist der Konfigurationsname, zum Beispiel foo oder bar im Vorlagencode.

Eine Datei mit dem Namen API[GA]_config[bar]_20191111.csv gibt beispielsweise Folgendes an:

  • [GA] bedeutet, dass Google Analytics das Zielsystem und Data Import die Ziel-API ist.
  • [bar] bedeutet, dass die Datei mit dem bar-Schlüssel eines JSON-Objekts an das Zielsystem gesendet wird, der in der Konfigurationsdateivorlage gespeichert ist.

Außerdem können Dateinamen folgende optionale Muster enthalten:

  • Wenn der Dateiname dryrun enthält, führt der Prozess alle Schritte aus, sendet die Daten jedoch nicht an den API-Server.
  • Wenn der Dateiname _size[Z] oder _size[Zmb] enthält, wird die eingehende Datei in mehrere Dateien aufgeteilt. Dateigrößen unter Z MB in Cloud Storage entsprechen den Größenbeschränkungen einiger APIs. Beispielsweise ist bei Data Import die Dateigröße auf 1 GB beschränkt.

Eine Datei mit dem Namen API[GA]_config[bar]_dryrun_20191111.csv wird zum Beispiel nicht an Google Analytics gesendet, sondern durchläuft das gesamte Integrationssystem. Eine Datei mit dem Namen API[GA]_config[bar]_size[100]_20191111.csv wird in mehrere Dateien von bis zu 100 MB aufgeteilt und diese Dateien werden mit Data Import einzeln an Google Analytics gesendet.

Die Lösung testen

Nach der Installation der Lösung können Sie die Dateneinbindung testen. Erstellen Sie dazu eine CSV-Datei und lassen Sie die Daten aus dieser Datei automatisch in eine Zieltabelle von Google Tabellen laden.

Berechtigung für das Dienstkonto gewähren

  1. Erstellen Sie eine neue Tabelle in Google Tabellen und geben Sie ihr einen Namen, zum Beispiel Integration Test.
  2. Klicken Sie auf Freigeben.
  3. Rufen Sie in Cloud Shell die E-Mail-Adresse des Dienstkontos ab, das Sie während der Installation angegeben haben.

    ./deploy.sh print_service_account
    
  4. Kopieren Sie die E-Mail-Adresse des Dienstkontos in das Feld Personen und wählen Sie die Option Kann bearbeiten aus, um die Berechtigungen als Bearbeiter zu gewähren.

ID der Zieltabelle abrufen

  • Kopieren Sie die Tabellen-ID Ihrer Zieltabelle in Google Tabellen.

    Die Tabellen-ID ist der Wert zwischen /d/ und /edit in der URL der Tabelle, wie spreadsheetId in der folgenden Adresse:

    https://docs.google.com/spreadsheets/d/spreadsheetId/edit#gid=0
    

API-Konfiguration aktualisieren

  1. Öffnen Sie in Cloud Shell den Ordner, in dem Sie die Lösung installiert haben, zum Beispiel ~/cloud-for-marketing/marketing-analytics/activation/gmp-googleads-connector.
  2. Öffnen Sie die JSON-Datei namens config_api.json und ersetzen Sie den Inhalt durch folgenden Code:

    {
      "GS": {
        "foo": {
          "spreadsheetId": "your-spreadsheet-id",
          "sheetName": "your-sheet-name",
          "sheetHeader": "This is a test integration",
          "pasteData": {
            "coordinate": {
              "rowIndex": 0,
              "columnIndex": 0
            },
            "delimiter": ","
          }
        }
      }
    }
    

    Dabei gilt:

    • your-spreadsheet-id: Ihre Tabellen-ID
    • your-sheet-name: Name des Zieltabellenblatts in Google Tabellen
  3. Laden Sie die Konfiguration in Firestore oder Datastore hoch:

    ./deploy.sh update_api_config
    

    Die Ausgabe sieht so aus:

    Init ApiConfig based on Datastore.
      Import Config for API[GS]_config[foo]
    

Zu sendende Dateien vorbereiten

In diesem Test laden Sie die Daten aus der CSV-Datei in das Zieltabellenblatt hoch.

  • Erstellen Sie in Cloud Shell eine CSV-Datei mit dem Inhalt einiger integrierter APIs:

    cat > API[GS]_config[foo]_test.csv <<EOF
    #What are Tentacles built in APIs
    Target System, Target API, Code
    Google Analytics, Measurement Protocol, MP
    Google Analytics, Google Analytics Management API, GA
    Campaign Manager, DCM/DFA Reporting and Trafficking API, CM
    Search Ads 360, SFTP, SFTP
    EOF
    

Laden Sie die Datei in Cloud Storage hoch:

  • Laden Sie die Datei in den Cloud Storage-Bucket hoch:

    ./deploy.sh copy_file_to_gcs API[GS]_config[foo]_test.csv
    

    Die Ausgabe sieht etwa so aus:

    Copy integration data file to target folder…
    Copying file:...
      Operation completed over...
    

Prüfen Sie das Ergebnis

  • Öffnen Sie in Google-Tabellen die Tabelle, die Sie zuvor erstellt haben.

    Die Größe von Tabellenblatt1 wurde geändert und die Daten aus der CSV-Datei wurden geladen.

    Screenshot der Ansicht von Google Tabellen mit hochgeladenen Daten

Bereinigen

Am einfachsten vermeiden Sie weitere Kosten, wenn Sie das für die Anleitung erstellte Projekt löschen.

  1. Wechseln Sie in der Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

Nächste Schritte