Als der Google Tag Manager Server-Container veröffentlicht wurde, konnte dieser nur auf einer App Engine innerhalb der Google Cloud Plattform zum Laufen gebracht werden. Google stellt aber mittlerweile ein Docker-Image zur Verfügung, damit man den GTM-Server-Container auf einer beliebigen Umgebung installieren kann.
Neben der Google Cloud Plattform sind die Amazon Web Services (AWS) ein potentieller Kandidat für eine Cloud-basierte Bereitstellung des GTM-Servers. Mit der Anleitung von Simo wollte ich selbst auch AWS ausprobieren und werde die Schritte hier dokumentieren. Dabei sind folgende Schritte notwendig:
- Subdomains wählen
- AWS-Konto erstellen und einrichten
- SSL-Zertifikat erstellen
- DNS-Einträge vornehmen
- Elastic Beanstalk Applikation erstellen
- Umgebung für Preview-Server erstellen
- Eigene Domain zum Preview-Server zuweisen
- Umgebung für Tagging-Server erstellen
- Eigene Domain zum Tagging-Server zuweisen
- Google Tag Manager-Einstellungen
Subdomains wählen
Um den Tagging-Server zum Laufen zu bringen, benötigen wir eine eigene Domain dafür. Hier kommt es auf dein aktuelles Setup an:
- Entweder du hast schon den Tagging-Server auf GCP installiert und möchtest den Container nur auf AWS migrieren. In diesem Fall hast du wahrscheinlich schon eine eigene Subdomain.
- Oder du legst eine neue Subdomain an. Im besten Fall liegt sie auf der gleichen Domain wie die Website, auf der Daten gesammelt werden. Im Falle meiner Website demirjasarevic.com wäre es eine gute Option collect.demirjasarevic.com oder sst.demirjasarevic.com zu wählen.
Die Subdomain collect.demirjasarevic.com wäre z.B. die Domain für den Haupt-Tagging-Server. Wir benötigen jedoch eine weitere Subdomain für den Vorschau-Server (Preview Server). Dies sollte wiederum eine Subdomain des Haupt-Tagging-Servers sein wie z.B. debug.collect.demirjasarevic.com.
Bevor du also weitermachst solltest du die Subdomains wählen und einrichten! Falls du schon eine Subdomain für den GTM-Server hast und der GTM-Server läuft gerade auf GCP, dann kannst du die bestehende Subdomain beibehalten. Die nachfolgende Anleitung gilt für beide Fälle.
AWS-Konto erstellen und einrichten
Zunächst muss ein AWS-Konto auf https://aws.amazon.com/de/ erstellt werden. Führe die Sign-Up-Schritte einfach durch. Wenn du dich zum ersten Mal bei AWS anmeldest, dann sind bestimmte Angebote und Kontingente für 12 Monate kostenlos. Danach kann man AWS weiterhin kostenlos nutzen – sofern man gewisse Limits nicht überschreitet. Also ähnlich wie bei der Google Cloud Plattform. Dennoch musst du eine Kreditkarte angeben.
Nach der Konto-Erstellung solltest du die Region festlegen. Diese siehst du oben rechts in der Leiste. Wähle hier am besten die Region, zu der du am nächsten bist:
SSL-Zertifikat erstellen
Wie bei der Google Cloud Plattform müssen wir auch bei AWS die notwendigen SSL-Zertifikate erstellen. Dazu navigierst du im AWS-Konto zum “AWS Certificate Manager”. Hier kannst du ein öffentliches Zertifikat erstellen, welches kostenlos ist:
Im Anschluss müssen die zwei Domains (Tagging-Server und Preview-Server) dem Zertifikat hinzugefügt werden:
Als nächstes wählt man die DNS-Validierung aus:
Den Schritt “Tags hinzufügen” kann man dann überspringen. Danach musst du deine Einstellungen bestätigen, um die CNAME-Datensätze zu bekommen:
DNS-Einträge vornehmen
Um die bei AWS hinterlegten Domains zu validieren, musst du nun die DNS-Datensätze eintragen. Bei einer Migration von GCP zu AWS musst du die bestehenden DNS-Datensätze anpassen. Lege die entsprechenden Einträge an. War es erfolgreich, wird das entsprechend angezeigt:
Danach müssen die Nameserver der definierten Domains zu AWS zeigen. Dazu muss man eine gehostete Zone in AWS Route53 anlegen. Navigiere dazu innerhalb AWS zu Route53. Dann erstelle eine gehostete Zone:
Unter “Domänenname” kommt die Domain des Tagging-Servers:
Klicke dann auf “Gehostete Zone erstellen”. Im Anschluss bekommst du die NS-Sätze, die du nun eintragen musst.
Elastic Beanstalk Applikation erstellen
Im nächsten Schritt brauchen wir eine Elastic Beanstalk Applikation mit 2 Umgebungen:
- Eine Umgebung für den Preview-Server
- Eine Umgebung für den Tagging-Server
Navigiere dazu innerhalb AWS zu Elastic Beanstalk und erstelle eine Applikation mit Klick auf “Create Application” auf der Elastic Beanstalk-Startseite. Vergebe dann einen App-Namen:
Weiter unten wählst du als Plattform “Docker” aus. Unter “Tags” musst du nichts einstellen. Unter “Anwendungscode” wählst du “Beispielanwendung”. Danach klickst du ganz unten auf “Weitere Optionen konfigurieren”. Im Anschluss wird die Anwendung erstellt und es dauert einen Moment. Auf der darauffolgenden Seite scrollst du ganz nach unten und klickst “Abbrechen”. Das ist wichtig, da wir die 2 benötigten Umgebungen manuell erstellen möchten.
Gehst du nun auf “Anwendungen” im linken Navigationsmenü innerhalb der Elastic Beanstalk-Einstellungen findest du die soeben erstellte Anwendung:
Umgebungen für Preview-Server erstellen
Jetzt müssen wir die 2 Umgebungen für den Tagging- und Preview-Server erstellen. Hierzu wird auch ein Load-Balancer benötigt. Klicke dazu zunächst auf den Anwendungsnamen aus dem oberen Screenshot. Hier kommst du dann auf eine Ansicht, wo du die erste Umgebung erstellen kannst:
Klicke auf “Eine neue Umgebung erstellen” und dann wähle “Webserver-Umgebung”:
Wähle dann einen sinnvollen Namen:
Unter “Plattform” wählst du “Docker”:
Unter “Anwendungscode” wählst du “Laden Sie Ihren Code hoch”. Hier muss nun die Docker-Datei angefügt werden. Diese findet man unter gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable (siehe Google-Doku). Unter dieser URL stellt Simo Ahava eine fertige JSON-Datei bereit, die als “Dockerrun.aws.json” hochgeladen werden kann:
{
"AWSEBDockerrunVersion": "1",
"Image": {
"Name": "gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable",
"Update": "true"
},
"Ports": [
{
"ContainerPort": 8080
}
]
}
Speichere also die JSON-Datei lokal ab und lade sie an der geeigneten Stelle wieder hoch:
Klicke dann ganz unten auf “Weitere Optionen konfigurieren”. Bei “Software” klickst du dann auf “Bearbeiten”. Scrolle dann runter zu den “Umgebungseigenschaften”. Füge hier 2 Zeilen hinzu:
- RUN_AS_PREVIEW_SERVER: true
- CONTAINER_CONFIG: Diesen Wert findest du in den Container-Einstellungen des GTM-Server-Containers
Die CONTAINER_CONFIG findest du also hier:
Die fertigen Umgebungseigenschaften sehen dann wie folgt aus:
Klicke dann auf “Speichern”. Danach klicke bei “Kapazität” auf “Bearbeiten”. Wähle dann folgenden Umgebungstyp und klicke dann ganz unten auf “Speichern”:
Dann gehst du bei “Load Balancer” auf “Bearbeiten”. Unter “Listener” wählst du “Listener hinzufügen”:
Wähle dann folgende Einstellungen und klicke auf “Hinzufügen” (hier wird unser anfangs erstelltes SSL-Zertifikat hinzugefügt):
Dann muss weiter innerhalb der Load Balancer-Einstellungen unter “Prozesse” der bestehende Eintrag bearbeitet werden:
Unter “Zustandsprüfung” werden nun folgende Einstellungen gesetzt und mit “Speichern” bestätigt:
Gleich im Anschluss wird nun ein neuer Prozess hinterlegt:
Wähle bzw. setze dann folgende Angaben und bestätige mit “Hinzufügen”:
Scrolle nun ganz runter und klicke “Speichern”, um die soeben vorgenommenen Load Balancer-Einstellungen zu speichern. Danach kommst du wieder auf die Übersichtsseite der Umgebung. Hier klickst du nun ganz unten rechts auf “Umgebung erstellen”:
Danach wird die Umgebung erstellt:
War alles erfolgreich, dann bekommst du folgende Ansicht:
Zu diesem Zeitpunkt kann nun die Umgebung auch getestet werden, indem die bereitgestellte URL mit /healthz am Ende aufgerufen wird:
Im Browser sollte nun eine weiße Seite mit “ok” erscheinen. Dann hat alles geklappt.
Eigene Domain zum Preview-Server zuweisen
Damit wir nicht die eben markierte – von AWS zur Verfügung gestellte Domain nutzen – sondern unsere eigene, müssen wir unsere eigene Domain dem Preview-Server zuweisen. Dazu gehen wir zu Route53 und klicken auf die vorher erstellte Zone. Dann klicken wir unter “Datensätze” auf “Datensatz erstellen”:
Danach wählst du unter “Datensatzname” die von dir gewählte Domain für den Preview-Server. In meinem Fall wäre das “debug”. Als Datensatztyp behältst du “A”. Ganz rechts klickst du dann auf “Alias” und wählst anschließend folgende Einstellungen:
Die letzte Zeile ganz rechts ist die von AWS zur Verfügung gestellte Domain für den Preview-Server. Klicke dann auf “Einträge erstellen”. Im Anschluss kann man gleich testen, ob alles erfolgreich war. Gehe dazu auf die Preview-Server-Domain inkl. /healthz als Pfad. In meinem Fall wäre das:
https://debug.collect.demirjasarevic.com/healthz
Im Browser sollte dann auf der weißen Seite “ok” ausgegeben werden:
Umgebungen für Tagging-Server erstellen
Nun muss eine Umgebung für den Tagging-Server erstellt werden. Gehe dazu zu der Anwendungsseite von Elastic Beanstalk und klicke auf “Eine neue Umgebung erstellen” innerhalb der bestehenden Anwendung. Als Umgebungsstufe wählst du wie beim Preview-Server “Webserver-Umgebung” aus und vergibst einen sinnvollen Namen:
Wähle dann unter “Plattform” wieder “Docker” aus. Unter “Anwendungscode” wählst du die schon bestehende Version aus:
Klicke dann auf “Weitere Optionen konfigurieren”. Unter “Software” klickst du wieder auf “Bearbeiten” und scrollst runter zu den Umgebungseigenschaften. Hier gibst du dann 2 Zeilen ein:
- CONTAINER_CONFIG: Diesen Wert findest du in den Container-Einstellungen des GTM-Server-Containers
- PREVIEW_SERVER_URL: Hier wählst du die SSL-Domain des Preview-Servers
In meinem Fall sehen die Einträge wie folgt aus:
Klicke auf “Speichern” und gehe dann in den Bearbeitungsmodus von “Kapazität”. Wähle als “Umgebungstyp” -> “Mit Lastenausgleich” und klicke dann auf “Speichern”, falls du sonst nichts anpassen möchtest. Gehe nun unter “Load Balancer” auf “Bearbeiten”. Unter “Listener” muss wieder ein Listener hinzugefügt werden:
Dann muss unter “Prozesse” der default-Eintrag angepasst werden. Unter “Zustandsprüfung” musst folgende Einträge hinzufügen:
Danach muss noch ein Prozess hinzugefügt werden:
Danach die Load Balancer-Einstellungen speichern! Und im Anschluss die Umgebung erstellen lassen! Wurde die Umgebung fertig erstellt, kannst du die von AWS zur Verfügung gestellte Domain inkl. /healthz am Ende im Browser aufrufen. Kommt ein “ok” als HTML zurück, passt alles und es kann weitergehen.
Eigene Domain zum Tagging-Server zuweisen
Nun weisen wir unserem Tagging-Server die benutzerdefinierte Domain zu. Wie wechseln also zu Route53 und wählen unsere erstellte Zone. Danach klicken wir auf “Datensatz erstellen” und wählen folgende Einstellungen:
Auch hier kann nach der Erstellung die Domain wie oben beschrieben getestet werden.
Google Tag Manager-Einstellungen
Im Google Tag Manager solltest du nun zu den Container-Einstellungen wechseln. Unter “Tagging-Server-URL” musst du eventuell eine Anpassung vornehmen:
- Falls du im Zuge des AWS-Deployments eine neue Domain angelegt hast, dann kommt diese hier rein.
- Falls du den GTM-Server zuvor schon auf der GCP hattest, dann wirst du vermutlich hier schon deine Domain stehen sehen. Falls die Domain gleich geblieben ist, dann musst du hier nichts anpassen.
Beim letzten Punkt muss man jedoch zusätzlich aufpassen, dass es bei der Migration zu keiner Downtime kommt, wenn die DNS-Einträge angepasst werden. Hier macht es Sinn zunächst die vorhandenen Einträge auf dem DNS-Server anzupassen. Erst wenn die AWS-Einträge greifen, sollten die A- und AAAA-Records aus GCP entfernt werden.
Der letzte Test kann nun erfolgen. Gehe in den GTM-Arbeitsbereich und klicke “In Vorschau ansehen”. War alles erfolgreich, muss sich der Vorschaumodus in der von dir konfigurierten Domain öffnen: