Versionen Ihrer Anwendung in App Engine bereitstellen

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.

Hier finden Sie weitere Informationen zu Regions-IDs.

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:

  1. 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.

  2. 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 eine Version-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 den default-Dienst der Anwendung MY_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"
    }
    
  3. Prüfen Sie, ob die Version in der App Engine-Anwendung bereitgestellt wurde:

    1. Rufen Sie den Status des aktuellen Erstellungsvorgangs auf:

      Die HTTP-POST-Anfrage, die Sie im vorherigen Schritt verwendet haben, hat den Vorgangsnamen im Feld name zurückgegeben, das Sie zusammen mit der Methode GET der apps.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.

    2. Prüfen Sie, ob die Version in Ihrer App Engine-Anwendung erstellt wurde:

      Zum Aufrufen von Details der Version verwenden Sie die Methode GET der apps.services.versions-Sammlung. Geben Sie in der HTTP-Anfrage GET 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
      
  4. 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]
    
  5. 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:

  1. Erstellen Sie den neuen Code und die Quelldateien für den Dienst backend.
  2. Stellen Sie die Anwendungsressourcen für den Dienst backend in einem Cloud Storage-Bucket bereit.
  3. Erstellen Sie die Konfigurationsdatei backend/app.json.
  4. Verwenden Sie HTTP-Anfragen, um die v1-Version des Dienstes backend 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 Version v1 im Dienst backend 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
            }
          }
        }
      ]
    }
    

Weitere Informationen