Wir möchten unsere Amazon Ads Daten mithilfe von Airbyte auslesen und in unser Data Warehouse BigQuery transferieren.
In dieser Anleitung wird der Prozess beschrieben, wie man Amazon Ads als Source (Datenquelle) in Airbyte Open Source konfiguriert.
Amazon Ads in Airbyte Open Source
Die Einrichtung der Source in Airbyte benötigt einige Eingaben (siehe Bild), auf die im Verlauf dieser Anleitung eingegangen wird.
Die Anleitung orientiert sich an der Airbyte Dokumentation amazon-ads. Hier wird man zum Amazon Ads API Onboarding weitergeleitet, das im nächsten Schritt beschrieben wird.
Informationen zur Amazon Ads API
Folgend ein paar Links zu nützlichen Informationen bzgl. der Amazon Ads API, Authorization und Login with Amazon (LwA):
- Amazon Ads API Overview
- Amazon Ads API Authorization Overview
- Login with Amazon (LwA) Conceptual Overview
Amazon Ads API Onboarding Prozess
Der Amazon Ads API Onboarding Prozess beschreibt das Erstellen einer Client-Applikation mit Zugang zur Amazon Ads API. Der Onboarding Prozess beinhaltet:
- das Erstellen einer auch Client-Applikation (Login with Amazon Applikation)
- das Anfragen des Zugangs zur Amazon Ads API
- die Zuweisung des Zugangs zur Client-Applikation
Sofern eine Client-Applikation mit Zugang zur Amazon Ads API bereits existiert, muss diese verwendet werden.
→ Client ID und Client Secret des Security Profils notieren und weiter zu Schritt "Amazon Ads API Getting-Started".
Erstellen einer Client-Applikation (auch Login with Amazon Applikation)
- Amazon Developer Account erstellen bzw. einloggen:
Man muss bei Amazon Developer https://developer.amazon.com/ einen Account erstellen bzw. sich einloggen. Die verwendete E-Mail sollte bei der Einrichtung im Unternehmen von mehreren Personen benutzbar sein. Security Profil erstellen:
- Security Profil erstellen bzw. bestehendes Profil mit Zugang zur Amazon Ads API verwenden https://developer.amazon.com/loginwithamazon/console/site/lwa/overview.html.
Die Client ID und Client Secret des Security Profils notieren. Beides wird sowohl in folgenden Anfragen an die API als auch in Airbyte benötigt.
"Can I use more than one client ID with the API? → No. As a policy, Amazon Ads enables API access for one client ID per company. There is no need for multiple client IDs, as an unlimited number of users can use the same client ID within a company. Additional user permissions can be managed later in the Amazon Developer console. However, only the original creator of the Amazon Developer account may complete the initial onboarding sequence."
Anfragen des Zugangs zur Amazon Ads API
Abhängig von der Rolle des Unternehmens, Partner oder Direct Advertiser, gibt es einen unterschiedlichen Weg den Zugang zur Amazon Ads API anzufragen. Die Prüfung kann bis zu 72 Stunden dauern.
- Partner : Businesses that build applications and software solutions to automate and help optimize advertising on behalf of others can access the Amazon Ads API as a third party.
→ https://advertising.amazon.com/partner-network/manage/api (Account im Amazon Ads Partner Network wird benötigt) - Direct Advertiser : Advertisers that use the Amazon Ads API to automate, scale, and optimize advertising activities and reporting.
→ Apply for API access as a Direct Advertiser (Auf den Account achten, mit dem man angemeldet ist!)
Nach der Anfrage erhält man 2 E-Mails. Eine bzgl. Technical Support und eine für den Application Status. "Please read Assign API access to your LwA application before following the links in the application status email."
Zuweisung des Zugangs zur Client-Applikation
Bei erfolgreicher Anfrage erhält man eine E-Mail von Amazon Ads. Die E-Mail enthält einen Link, mit dem man den Zugang zur API einer Client-Applikation zuweisen kann.
"Before clicking on the link, it's important that you log out of all Amazon user accounts (including your personal shopping account) except the Amazon account you used to apply for access in step 2 (Anfragen des Zugangs zur Amazon Ads API). If anyone clicks on the link while logged into the wrong account, the link will be invalidated and will need to be reset by the Amazon API support team."
Nach dem Klicken auf den Link in der E-Mail, wählt man die Client-Applikation aus, die man vorher erstellt hat.
Nun bekommt man als Bestätigung die Client-ID und die zugewiesenen Scopes angezeigt:
- advertising::campaign_management (benötigt für die meisten Requests an die Amazon Ads API)
- advertising::test:create_account (benötigter Scope zum Erstellen von test accounts)
Amazon Ads API Getting-Started
Requests an die Amazon Ads API werden über eine Client-Applikation mithilfe eines User Accounts mit Zugriff auf die Amazon Ads Accounts getätigt. Ein User Account muss der Client-Applikation mithilfe von Login with Amazon (LwA) den Authorization Grant erteilen. Für den Getting-Started Teil sind die folgenden zwei Voraussetzungen nötig:
- Eine Login with Amazon Client-Applikation mit Zugang zur Amazon Ads API. Falls man noch keine Client-Applikation mit Zugang hat, siehe Onboarding (hier Amazon API Onboarding Prozess).
- Zugangsdaten für einen Amazon User Account, der für die Amazon Ads Accounts zuständig ist (falls man diese Zugangsdaten zum Amazon Ads Account nicht hat, learn about test accounts).
Die zugehörige Amazon Dokumentation liegt hier Amazon Ads API Getting-Started Overview.
Erstellen eines Authorization Grants für einen Advertising Account
Ein User Account muss der Client-Applikation mithilfe von Login with Amazon (LwA) den Authorization Grant erteilen.
Zuerst muss eine Authorization-URL im Security Profil angegeben werden. Dazu unter https://developer.amazon.com/loginwithamazon/console/site/lwa/overview.html das Security Profil auswählen und in den Web Settings in Allowed Return URLs die Authorization-URL eingeben. Die Authorization-URL kann zum Beispiel die Website des Unternehmens oder einer eigenen Applikation sein.
Authorization Grant → Code erhalten (nur 5 min gültig)
Prefix https://eu.account.amazon.com/ap/oa (nach Region unterschiedlich, hier EU, Auswahl unter https://advertising.amazon.com/API/docs/en-us/getting-started/create-authorization-grant)
Query Parameter
client_id=<CLIENT-ID>
scope=<SCOPE> (advertising::campaign_management oder cpc_advertising:campaign_management - LwA clients that were approved to access the API before October 2020 may need to set scope to cpc_advertising:campaign_management)
response_type=code
redirect_uri=<REDIRECT-URI> (ist die Authorization-URL)
Resultiert in Query (in Suchleiste mit den eigenen Parametern einsetzen):
https://eu.account.amazon.com/ap/oa?client_id=<CLIENT-ID>&scope=<SCOPE>&response_type=code&redirect_uri=<REDIRECT-URI>- Die Query leitet über einen Amazon Login Screen zur redirect_uri. In der Suchleiste auf der redirect_uri Seite befindet sich der Code des Authorization Grant. Diesen Code benötigt man im nächsten Step zur Erstellung des Access und Refresh Tokens.
So ähnlich sieht die Suchleiste aus: <REDIRECT-URI>?code=xxxxxxxxxxxxxxxxxxx&scope=advertising%3A%3Acampaign_management
Generieren eines Access Tokens und Refresh Tokens
Mit dem Code des Authorization Grants generiert man nun einen Access Token und einen Refresh Token. Ein Access Token wird für den Zugriff zur API benötigt und mithilfe des Refresh Tokens kann man neue Access Tokens erstellen.
Prefix https://api.amazon.co.uk/auth/o2/token (nach Region unterschiedlich, hier EU, Auswahl unter https://advertising.amazon.com/API/docs/en-us/getting-started/retrieve-access-token)
Query Parameter
grant_type=authorization_code
code=<AUTH-CODE> (aus vorherigem Step)
redirect_uri=<REDIRECT-URI>
client_id=<CLIENT-ID>
client_secret=<CLIENT-SECRET>
Resultiert in curl Command:
curl -X POST --data "grant_type=authorization_code&code=<AUTH-CODE>&redirect_uri=<REDIRECT-URI>&client_id=<CLIENT-ID>&client_secret=<CLIENT-SECRET>" https://api.amazon.co.uk/auth/o2/token- Antwort liefert Access Token und Refresh Token (Access Token ist 60 min gültig, Refresh Tokens laufen nicht ab)
Abrufen der Profile IDs
Mit den zuvor gesammelten Zugangsdaten kann man nun auf die Profiles resource zugreifen. Hier lassen sich die Profile IDs abrufen, die mit dem User Account in einem spezifischen Advertising Marketplace verknüpft sind.
https://advertising-api-eu.amazon.com/v2/profiles (nach Region unterschiedlich, hier EU, Auswahl unter https://advertising.amazon.com/API/docs/en-us/info/api-overview#api-endpoints)
required Headers
“Amazon-Advertising-API-ClientId: <CLIENT-ID>”
“Authorization: Bearer <ACCESS-TOKEN>”
Resultiert in curl Command:
curl -X GET -H "Amazon-Advertising-API-ClientId: <CLIENT-ID>" -H "Authorization: Bearer <ACCESS-TOKEN>" https://advertising-api-eu.amazon.com/v2/profiles- Die Antwort liefert alle Profile IDs plus Infos wie Name oder Region als JSON (maximal 5000).
Link zu dieser Seite: https://seibert.biz/airbyte-amazonads