Implementa versiones de tu app en App Engine

Usa la API de Administrador de Google App Engine para implementar de manera programática versiones de tus aplicaciones en tu aplicación de App Engine mediante solicitudes POST HTTP.

Antes de comenzar

Antes de que puedas enviar la solicitud de implementación de HTTP, debes poder autorizar la solicitud HTTP, acceder a los archivos de la etapa de pruebas de tu app y tener un archivo de configuración con formato JSON. Consulta los temas siguientes para obtener ayuda con estos requisitos previos:

Implementa tu app en App Engine con la API de Administrador

Para implementar una versión de tu app en tu aplicación en App Engine, sigue estos pasos:

  1. Autoriza tus solicitudes HTTP, por ejemplo, obtén un token de acceso.

    Puedes lograr la autorización de acceso a la API de Administrador con diferentes flujos de OAuth según las necesidades de tu app de API. Para obtener más información, consulta Acceso a la API.

  2. Envía una solicitud POST HTTP mediante tu token de acceso y la API de Administrador para implementar tu versión en la aplicación de App Engine:

    Para implementar una versión, debes enviar una solicitud POST HTTP que especifique el archivo de configuración JSON y define un recurso Version del servicio de destino y la aplicación de App Engine.

    Por ejemplo, puedes usar la solicitud POST HTTP siguiente para implementar la versión especificada en el archivo de configuración JSON en el servicio default de la aplicación MY_PROJECT_ID:

    POST https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/versions app.json
    

    A continuación, se muestra un ejemplo del comando cURL:

    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
    

    Aquí:

    • [MY_ACCESS_TOKEN] es el token de acceso que obtuviste para autorizar las solicitudes HTTP.
    • [MY_PROJECT_ID] es el ID del proyecto en el que deseas implementar la versión.

    Respuesta de ejemplo:

    {
      "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. Verifica si tu versión se implementó en tu aplicación de App Engine:

    1. Observa el estado de la operación de implementación real:

      La solicitud POST HTTP que usaste en el paso anterior mostró el nombre de la operación en el campo name, que debes usar con el método GET de la colección apps.operations para verificar el estado de la operación de implementación.

      Por ejemplo, si el campo name de la respuesta se ve de la manera siguiente:

      "name": "apps/[MY_PROJECT_ID]/operations/89729825-ef1f-4ffa-b3e3-e2c25eb66a85"
      

      Entonces, debes enviar la solicitud GET HTTP siguiente:

      GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/operations/89729825-ef1f-4ffa-b3e3-e2c25eb66a85
      

      A continuación, se muestra un ejemplo del comando cURL:

      curl -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/operations/89729825-ef1f-4ffa-b3e3-e2c25eb66a85
      

      Donde [MY_ACCESS_TOKEN] es tu token de acceso y [MY_PROJECT_ID] es el ID del proyecto en el que implementaste la versión.

      Respuesta de ejemplo:

      {
        "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,
        }
      }
      

      Para obtener más información sobre el sondeo de operaciones de ejecución prolongada, consulta la referencia RPC de google.longrunning.

    2. Verifica si la versión se creó en tu aplicación de App Engine:

      A fin de obtener detalles sobre la versión, usa el método GET de la colección apps.services.versions. Debes especificar la versión que implementaste en la solicitud GET HTTP, como se muestra a continuación:

      GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/versions/v1
      

      A continuación, se muestra un ejemplo del comando cURL:

      curl -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/versions/v1
      

      Donde [MY_ACCESS_TOKEN] es tu token de acceso y [MY_PROJECT_ID] es el ID del proyecto en el que implementaste la versión.

      Respuesta de ejemplo:

      {
        "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,
      }
      

      Sugerencia: Puedes agregar el parámetro view=FULL para ver toda la información disponible sobre la versión, como se muestra a continuación:

      GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/versions/v1?view=FULL
      
  4. Para iniciar tu navegador y ver la app en http://[MY_VERSION_ID].[MY_PROJECT_ID].appspot.com, puedes ejecutar el siguiente comando (paso opcional):

    gcloud app browse -v [MY_VERSION_ID]
    
  5. Configura cuánto tráfico debe recibir la versión que acabas de implementar.

    Según la configuración predeterminada, la versión inicial que implementas en tu aplicación de App Engine se configura de forma automática para recibir el 100% del tráfico. Sin embargo, todas las versiones posteriores que implementes en esa misma aplicación de App Engine deben configurarse de manera manual; de lo contrario, no recibirán tráfico.

    A fin de obtener detalles sobre cómo configurar el tráfico para tus versiones, consulta Migración y división de tráfico.

Implementa versiones y servicios adicionales

Los pasos para implementar versiones posteriores de tu app, incluida la creación de servicios adicionales, son casi idénticos a los pasos de implementación cubiertos en esta tarea. Si deseas reemplazar la versión actual ejecutada en tu aplicación de App Engine o si deseas agregar servicios adicionales, puedes implementar versiones nuevas después de realizar algunas modificaciones en tus archivos de configuración.

Consulta los ejemplos siguientes para saber cómo implementar versiones adicionales en tu aplicación de App Engine. Recuerda que, después de implementar las versiones, deberás configurar su tráfico.

Ejemplo: Implementación de versiones adicionales

Si se está ejecutando una versión antigua o defectuosa en App Engine, puedes reemplazar esa versión si implementas otra en tu aplicación de App Engine y, luego, enrutar el tráfico a esa versión. Por ejemplo, después de modificar el código fuente de tu aplicación, puedes cambiar el valor de version en el archivo app.yaml, crear un archivo app.json nuevo y, luego, implementar una versión v2 de tu aplicación con otra solicitud POST HTTP:

A continuación, se muestra un ejemplo de un archivo app.yaml actualizado:

  service: default
  version: v2
  runtime: python27
  threadsafe: true
  handlers:
  - url: /.*
    script: my-python-app.application

A continuación, se muestra un ejemplo de la solicitud POST HTTP para la versión v2:

  POST https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/versions app.json

Después de seguir los pasos para asegurarte de que la versión se implementó de forma correcta, puedes enviar una solicitud PATCH HTTP a fin de enrutar todo el tráfico a la versión nueva, como se muestra a continuación:

  PATCH https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/?updateMask=split {"split": { "allocations": { "v2": "1" } } }

Para obtener información sobre el enrutamiento de tráfico, consulta Migración y división de tráfico.

Ejemplo: Implementación de múltiples servicios

Si ejecutas una versión v1 en tu aplicación de App Engine y deseas implementar un servicio adicional, por ejemplo, backend, debes seguir los mismos pasos de implementación.

Por ejemplo, para implementar la versión v1 que crea el servicio de backend, sigue estos pasos:

  1. Crea el código y los archivos fuente nuevos para el servicio de backend.
  2. Habilita a etapa de pruebas los recursos de la aplicación para tu servicio de backend en un depósito de Cloud Storage.
  3. Crea el archivo de configuración backend/app.json.
  4. Usa las solicitudes HTTP para implementar la versión v1 del servicio de backend en tu aplicación de App Engine:

    A continuación, se muestra un ejemplo de una solicitud POST HTTP:

    POST https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/backend/versions backend/app.json
    

    A continuación, se muestra un ejemplo de una solicitud GET HTTP para verificar que se creó la versión v1 en el servicio de backend:

    GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services
    

    Respuesta de ejemplo:

    {
      "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
            }
          }
        }
      ]
    }
    

Pasos siguientes

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

API de Administrador de App Engine