Regions-ID
REGION_ID
ist ein abgekürzter Code, den Google anhand der Region zuweist, die Sie beim Erstellen Ihrer Anwendung ausgewählt haben. Der Code bezieht sich nicht auf ein Land oder eine Provinz, auch wenn einige Regions-IDs häufig verwendeten Länder- und Provinzcodes ähneln können. Bei Anwendungen, die nach Februar 2020 erstellt wurden, ist REGION_ID.r
in den App Engine-URLs enthalten. Bei Anwendungen, die vor diesem Datum erstellt wurden, ist die Regions-ID in der URL optional.
Mit der App Engine Admin API können Sie Versionen Ihrer Anwendungen mithilfe der HTTP-Anfrage POST
in Ihrer App Engine-Anwendung bereitstellen.
Vorbereitung
Damit Sie die HTTP-Bereitstellungsanfrage senden können, müssen Sie die HTTP-Anfrage autorisieren können. Außerdem benötigen Sie eine JSON-Konfigurationsdatei und Zugriff auf die bereitgestellten Dateien Ihrer Anwendung. Weitere Informationen zu diesen Voraussetzungen finden Sie in den folgenden Themen:
Anwendung über die Admin API in App Engine bereitstellen
So stellen Sie eine Version Ihrer Anwendung in Ihrer App Engine-Anwendung bereit:
Autorisieren Sie Ihre HTTP-Anfragen, indem Sie zum Beispiel ein Zugriffstoken anfordern.
Die Autorisierung des Zugriffs auf die Admin API kann je nach den Anforderungen Ihrer API-Anwendung mit unterschiedlichen OAuth-Abläufen erfolgen. Weitere Informationen finden Sie unter Zugriff auf die API.
Senden Sie die HTTP-Anfrage
POST
mit Ihrem Zugriffstoken an die Admin API, um die Version in der App Engine-Anwendung bereitzustellen.Zum Bereitstellen einer Version senden Sie eine HTTP-
POST
-Anfrage. Geben Sie darin die JSON-Konfigurationsdatei an und definieren Sie eineVersion
-Ressource des Zieldienstes und der App Engine-Anwendung.Sie können beispielsweise mit der folgenden HTTP-
POST
-Anfrage die in der JSON-Konfigurationsdatei angegebene Version für dendefault
-Dienst der AnwendungMY_PROJECT_ID
bereitstellen:POST https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/versions app.json
Beispiel eines cURL-Befehls:
curl -X POST -T "app.json" -H "Content-Type: application/json" -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/versions
Dabei gilt:
[MY_ACCESS_TOKEN]
ist das Zugriffstoken, das Sie erhalten haben, um Ihre HTTP-Anfragen zu autorisieren.[MY_PROJECT_ID]
ist die ID des Projekts, in dem Sie die Version bereitstellen möchten.
Beispielantwort:
{ "metadata": { "@type": "type.googleapis.com/google.appengine.v1.OperationMetadataV1", "insertTime": "2015-05-29T17:12:44.679Z", "method": "google.appengine.v1.Versions.CreateVersion", "target": "apps/[MY_PROJECT_ID]/services/default/versions/v1", "user": "me@example.com" } "name": "apps/[MY_PROJECT_ID]/operations/89729825-ef1f-4ffa-b3e3-e2c25eb66a85" }
Prüfen Sie, ob die Version in der App Engine-Anwendung bereitgestellt wurde:
Rufen Sie den Status des aktuellen Erstellungsvorgangs auf:
Die HTTP-
POST
-Anfrage, die Sie im vorherigen Schritt verwendet haben, hat den Vorgangsnamen im Feldname
zurückgegeben, das Sie zusammen mit der MethodeGET
derapps.operations
-Sammlung verwenden, um den Status des Bereitstellungsvorgangs zu überprüfen.Wenn beispielsweise das Feld
name
der Antwort so lautet:"name": "apps/[MY_PROJECT_ID]/operations/89729825-ef1f-4ffa-b3e3-e2c25eb66a85"
Senden Sie dann die folgende HTTP-Anfrage
GET
:GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/operations/89729825-ef1f-4ffa-b3e3-e2c25eb66a85
Beispiel eines cURL-Befehls:
curl -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/operations/89729825-ef1f-4ffa-b3e3-e2c25eb66a85
Dabei steht
[MY_ACCESS_TOKEN]
für Ihr Zugriffstoken und[MY_PROJECT_ID]
für die ID des Projekts, in dem Sie die Version bereitgestellt haben.Beispielantwort:
{ "done": true, "metadata": { "@type": "type.googleapis.com/google.appengine.v1.OperationMetadataV1", "endTime": "2015-05-29T17:13:20.424Z", "insertTime": "2015-05-29T17:12:44.679Z", "method": "google.appengine.v1.Versions.CreateVersion", "target": "apps/[MY_PROJECT_ID]/services/default/versions/v1", "user": "me@example.com" }, "name": "apps/[MY_PROJECT_ID]/operations/89729825-ef1f-4ffa-b3e3-e2c25eb66a85", "response": { "@type": "type.googleapis.com/google.appengine.v1.Version", "creationTime": "2015-05-29T17:12:46.000Z", "deployer": "me@example.com", "id": "v1", "name": "apps/[MY_PROJECT_ID]/services/default/versions/v1", "runtime": "python27", "servingStatus": "SERVING", "threadsafe": true, } }
Weitere Informationen zum Abrufen längerfristiger Vorgänge finden Sie in der RPC-Referenz google.longrunning.
Prüfen Sie, ob die Version in Ihrer App Engine-Anwendung erstellt wurde:
Zum Aufrufen von Details der Version verwenden Sie die Methode
GET
derapps.services.versions
-Sammlung. Geben Sie in der HTTP-AnfrageGET
die bereitgestellte Version an. Beispiel:GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/versions/v1
Beispiel eines cURL-Befehls:
curl -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/versions/v1
Dabei steht
[MY_ACCESS_TOKEN]
für Ihr Zugriffstoken und[MY_PROJECT_ID]
für die ID des Projekts, in dem Sie die Version bereitgestellt haben.Beispielantwort:
{ "creationTime": "2015-05-29T17:12:46.000Z", "deployer": "me@example.com", "deployment": { "files": { "my-python-app.py": { "sha1Sum": "7cffbdaa9fcfa46e5e58269bfe336dd815de0566", "sourceUrl": "https://storage.googleapis.com/[YOUR_BUCKET_ID]/my-application/logo.jpg", }, "logo.jpg": { "sha1Sum": "13f7ea1e24f7cd2de5c66660525f2b509da37c14", "sourceUrl": "https://storage.googleapis.com/[YOUR_BUCKET_ID]/my-application/my-python-app.py" } } }, "handlers": [ { "authFailAction": "AUTH_FAIL_ACTION_REDIRECT", "login": "LOGIN_OPTIONAL", "script": { "scriptPath": "my-python-app.application", }, "securityLevel": "SECURE_OPTIONAL", "urlRegex": "/.*" } ] "id": "v1", "name": "apps/[MY_PROJECT_ID]/services/default/versions/v1", "runtime": "python27", "servingStatus": "SERVING", "threadsafe": true, }
GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/versions/v1?view=FULL
Optional: Mit dem folgenden Befehl können Sie den Browser starten und die Anwendung unter
https://VERSION_ID-dot-default-dot-PROJECT_ID.REGION_ID.r.appspot.com
aufrufen:gcloud app browse -v [MY_VERSION_ID]
Konfigurieren Sie, wie viel Traffic die soeben bereitgestellte Version erhalten soll.
Standardmäßig wird der gesamte Traffic an die anfänglich in Ihrer App Engine-Anwendung bereitgestellte Version gesendet. Bei allen nachfolgend in derselben App Engine-Anwendung bereitgestellten Versionen muss der Trafficempfang jedoch manuell konfiguriert werden, da sonst kein Traffic an sie gesendet wird.
Weitere Informationen zur Traffickonfiguration für Ihre Versionen finden Sie im Artikel zum Migrieren und Aufteilen des Traffics.
Zusätzliche Versionen und Dienste bereitstellen
Das Bereitstellen nachfolgender Versionen Ihrer Anwendung und das Erstellen zusätzlicher Dienste erfolgt ähnlich wie in dieser Beschreibung. Wenn Sie die aktuell in der App Engine-Anwendung ausgeführte Version ersetzen oder weitere Dienste hinzufügen möchten, können Sie nach ein paar Änderungen an den Konfigurationsdateien neue Versionen bereitstellen.
Die folgenden Beispiele zeigen, wie Sie in der App Engine-Anwendung zusätzliche Versionen bereitstellen. Denken Sie nach der Bereitstellung der Versionen daran, dass Sie den Traffic konfigurieren müssen.
Beispiel: Zusätzliche Versionen bereitstellen
Wenn in App Engine eine alte oder fehlerhafte Version ausgeführt wird, können Sie diese durch eine andere Version ersetzen. Stellen Sie die neue Version einfach in der App Engine-Anwendung bereit und leiten Sie den Traffic dorthin um. Sie können beispielsweise nach dem Ändern des Quellcodes der Anwendung den Wert von version
in der Datei app.yaml
ändern, eine neue app.json
-Datei erstellen und dann eine v2
-Version Ihrer Anwendung mit einer anderen HTTP-POST
-Anfrage bereitstellen:
Beispiel für eine aktualisierte app.yaml
-Datei:
service: default
version: v2
runtime: python27
threadsafe: true
handlers:
- url: /.*
script: my-python-app.application
HTTP-Beispielanfrage POST
für Version v2
:
POST https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/versions app.json
Nachdem Sie bestätigt haben, dass die Version bereitstellt wurde, können Sie die HTTP-Anfrage PATCH
senden, um den gesamten Traffic zur neuen Version umzuleiten. Beispiel:
PATCH https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/?updateMask=split {"split": { "allocations": { "v2": "1" } } }
Informationen zum Traffic-Routing finden Sie unter Traffic migrieren und aufteilen.
Beispiel: Mehrere Dienste bereitstellen
Wenn in Ihrer App Engine-Anwendung eine Version von v1
ausgeführt wird und Sie einen zusätzlichen Dienst wie backend
bereitstellen möchten, führen Sie dieselben Bereitstellungsschritte aus.
So stellen Sie beispielsweise die Version v1
zum Erstellen des Dienstes backend
bereit:
- Erstellen Sie den neuen Code und die Quelldateien für den Dienst
backend
. - Stellen Sie die Anwendungsressourcen für den Dienst
backend
in einem Cloud Storage-Bucket bereit. - Erstellen Sie die Konfigurationsdatei
backend/app.json
. Verwenden Sie HTTP-Anfragen, um die
v1
-Version des Dienstesbackend
in Ihrer App Engine-Anwendung bereitzustellen:HTTP-Beispielanfrage
POST
:POST https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/backend/versions backend/app.json
HTTP-Beispielanfrage
GET
, um zu prüfen, ob die Versionv1
im Dienstbackend
erstellt wurde:GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services
Beispielantwort:
{ "services": [ { "name": "apps/[MY_PROJECT_ID]/services/default", "id": "default", "split": { "allocations": { "v2": 1 } } }, { "name": "apps/[MY_PROJECT_ID]/services/backend", "id": "backend", "split": { "allocations": { "v1": 1 } } } ] }