Comparar App Engine y Cloud Run

ID de región

El REGION_ID es un código abreviado que Google asigna en función de la región que selecciones al crear tu aplicación. El código no corresponde a un país o provincia, aunque algunos IDs de región pueden parecerse a los códigos de país y provincia que se usan habitualmente. En las aplicaciones creadas después de febrero del 2020, REGION_ID.r se incluye en las URLs de App Engine. En las aplicaciones creadas antes de esa fecha, el ID de región es opcional en la URL.

Más información sobre los IDs de región

Esta guía ofrece una introducción a Cloud Run para los usuarios que conocen App Engine. En él se describen las principales similitudes y diferencias entre las plataformas sin servidor para ayudarte a prepararte para migrar desde el entorno estándar o el entorno flexible de App Engine.

Información general

Cloud Run es la última evolución de Google Cloud sin servidor, basada en la experiencia de ejecutar App Engine durante más de una década. Cloud Run se ejecuta en gran parte de la misma infraestructura que el entorno estándar de App Engine, por lo que hay muchas similitudes entre estas dos plataformas.

Cloud Run está diseñado para mejorar la experiencia de App Engine e incorpora muchas de las mejores funciones del entorno estándar y flexible de App Engine. Los servicios de Cloud Run pueden gestionar las mismas cargas de trabajo que los servicios de App Engine, pero Cloud Run ofrece a los clientes mucha más flexibilidad a la hora de implementar estos servicios. Esta flexibilidad, junto con las integraciones mejoradas con Google Cloud y servicios de terceros, también permite que Cloud Run gestione cargas de trabajo que no se pueden ejecutar en App Engine.

Resumen de la comparación

Aunque hay muchas similitudes y diferencias entre App Engine y Cloud Run, esta descripción general se centra en las áreas más relevantes para los clientes de App Engine que empiezan a usar Cloud Run.

Entorno estándar de App Engine Entorno flexible de App Engine Cloud Run
Terminología Aplicación N/A
Servicio Servicio
Versión Revisión

Endpoints de URL

URL de la aplicación
(servicio default)
https://PROJECT_ID.REGION_ID.r.appspot.com N/A
URL de servicio https://SERVICE_ID-dot-PROJECT_ID.REGION_ID.r.appspot.com
  • https://SERVICE_NAME-PROJECT_NUMBER.REGION.run.app
  • https://SERVICE_IDENTIFIER.run.app
URL de la versión o revisión https://VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com
  • https://TAG---SERVICE_NAME-PROJECT_NUMBER.REGION.run.app
  • https://TAG---SERVICE_IDENTIFIER.run.app

Escalado

Escalado automático
Escalado manual
Escalado a cero No
Solicitudes de preparación Configurable No Automático
Tiempo de espera de la instancia inactiva (después de finalizar la última solicitud) Hasta 15 minutos Depende de la configuración de Facturación. Usa la facturación basada en instancias para emular el comportamiento de App Engine
Tiempo de espera de solicitud
  • Escalado automático: 10 minutos
  • Escalado manual o básico: 24 horas
60 minutos Se puede configurar hasta 60 minutos (el valor predeterminado es 5 minutos).

Implementación

De la fuente
Imagen de contenedor No Sí (runtimes personalizados)
Contenedores sidecar No . Los sidecars se ejecutan junto al contenedor principal y atienden solicitudes web.
Comprobaciones del estado Automático. App Engine realiza comprobaciones de disponibilidad y actividad en tus instancias. Configurable. Las sondas de inicio y de vivacidad se definen explícitamente en la configuración de recursos de Cloud Run, y se especifican detalles como el tipo de sonda (TCP, HTTP y gRPC), la ruta, el puerto, el retraso inicial, el periodo, el tiempo de espera, el umbral de éxito y el umbral de error.

Recursos de computación

vCPU
Clase de instancia vCPU* Memoria
F/B1 0,25 384 MB
F/B2 0.5 768 MB
F/B4 1 1,5 GB
F/B4_1G 1 3 GB
B8 2 3 GB
* Los equivalentes de vCPU son aproximados
Hasta 80 vCPUs Hasta 8 vCPU
Memoria Hasta 6,5 GB por vCPU Hasta 32 GB
GPUs No Sí. Puedes configurar una GPU por instancia de Cloud Run.
Montajes del volumen No Sí. Puedes montar un segmento de Cloud Storage directamente en el sistema de archivos del contenedor.

Modelo de precios

Tarifa por solicitud No No, si usas la facturación basada en instancias.
Sí, cuando se usa la facturación basada en solicitudes.
Instancias mínimas inactivas El mismo coste que las instancias activas Coste más bajo de las instancias mínimas inactivas (consulta Tiempo de instancia de contenedor facturable)
Descuentos por compromiso de uso (CUDs) No
Facturación basada en instancias (coste por hora de instancia) Instancia F4/B4: 0,2 USD
  • vCPU: 0,0526 USD
  • Memoria: 0,0071 $
    • vCPU: 0,0648 USD
    • Memoria: 0,0072 USD

    Seguridad

    Configuración de entrada
    Rol de invocador No
    IAP
    Cortafuegos Configurar con Google Cloud Armor
    Secret Manager Sí, con las bibliotecas de cliente de Cloud. . Puedes montar cada secreto como un volumen o pasar un secreto mediante variables de entorno.

    Conectividad

    Dominios personalizados
    Conectividad de VPC (incluida la VPC compartida) N/A
    Configuración de salida de VPC N/A
    Balanceo de carga multirregional No
    Streaming del servidor No

    Acceder a los servicios de Google Cloud

    Cloud SQL
    Bibliotecas de cliente de Cloud Si usas las bibliotecas de cliente de Cloud en App Engine, no tienes que cambiar nada al migrar a Cloud Run. Estas bibliotecas de cliente funcionan en cualquier lugar, lo que significa que tu aplicación es más portátil.
    Servicios agrupados antiguos de App Engine (solo Java, Python, Go y PHP) No No

    Modelo de recurso

    Diagrama del modelo de recursos de App Engine y Cloud Run

    El modelo de recursos de Cloud Run es muy similar al de App Engine, pero hay algunas diferencias clave:

    • Cloud Run no tiene un recurso Application de nivel superior ni el servicio default correspondiente.
    • Los servicios de Cloud Run del mismo proyecto se pueden desplegar en diferentes regiones. En App Engine, todos los servicios del proyecto están en la misma región.
    • Cloud Run usa el término Revisión en lugar de Versión para ajustarse al modelo de recursos de Knative.
    • Los nombres de las revisiones de Cloud Run tienen el formato SERVICE_NAME-REVISION_SUFFIX, donde REVISION_SUFFIX se genera automáticamente o se define mediante la marca de despliegue --revision-suffix=REVISION_SUFFIX.
    • Las revisiones de Cloud Run son inmutables, lo que significa que no puedes reutilizar nombres como en las versiones de App Engine (con la marca de implementación --version=VERSION_ID).
    • Las URLs de servicio de Cloud Run se basan en un identificador de servicio que se genera automáticamente en el primer despliegue del servicio. Los identificadores de servicio tienen el formato SERVICE_NAME-<auto-generated identifier>. El identificador de servicio es único y no cambia durante la vida útil del servicio.
    • En Cloud Run, solo se exponen de forma predeterminada las URLs de servicio (SERVICE_IDENTIFIER.run.app y https://SERVICE_NAME-PROJECT_NUMBER.REGION.run.app). Para dirigirte a una revisión específica, debes configurar una etiqueta de tráfico. En App Engine, se exponen automáticamente tanto las URLs de servicio como las de versión.

    Implementación y configuración

    En App Engine, la mayoría de las configuraciones se realizan en el archivo app.yaml, que se incluye en cada implementación. Esta sencillez tiene un coste, ya que, aunque se pueden actualizar algunos ajustes mediante la API Admin, la mayoría de los cambios requieren volver a implementar el servicio.

    Aunque Cloud Run tiene el archivo de configuración service.yaml, no se usa de la misma forma que app.yaml. El service.yaml de Cloud Run no se puede usar al implementar desde el código fuente, ya que uno de los elementos obligatorios es la ruta a la imagen de contenedor final. Además, service.yaml cumple las especificaciones de Knative y puede resultar difícil de leer para quienes no estén familiarizados con los archivos de configuración de Kubernetes. Para obtener más información sobre cómo usar service.yaml para gestionar la configuración, consulta la documentación de Cloud Run.

    Para los clientes de App Engine que empiezan a usar Cloud Run, el uso de las marcas de despliegue de la CLI gcloud se ajusta mucho más a la gestión de la configuración de App Engine en el momento del despliegue.

    Para definir la configuración al desplegar código nuevo en Cloud Run, usa las marcas gcloud run deploy:

    gcloud run deploy SERVICE_NAME \
    --cpu CPU \
    --memory MEMORY \
    --concurrency CONCURRENCY
    

    Aunque no es necesario usar las marcas de configuración en todas las implementaciones (consulta Gestión de configuraciones), puedes hacerlo para simplificar la gestión de la configuración.

    En Cloud Run, también puedes actualizar la configuración sin volver a desplegar el código fuente mediante gcloud run services update:

    gcloud run services update SERVICE_NAME \
    --cpu CPU \
    --memory MEMORY \
    --concurrency CONCURRENCY
    

    Como las revisiones de Cloud Run son inmutables, este comando creará una nueva revisión con la configuración actualizada, pero usará la misma imagen de contenedor que la revisión actual.

    Gestionar configuraciones

    En las implementaciones de App Engine, se deben proporcionar todos los ajustes para cada implementación. Los ajustes que no se proporcionen tendrán valores predeterminados. Por ejemplo, App Engine service-a, con versiones que usan los archivos app.yaml de la siguiente tabla:

    Versión 1 del servicio A de App Engine Servicio de App Engine: versión 2
    app.yaml
    runtime: python39
    service: service-a
    instance_class: F4
    
    runtime: python39
    service: service-a
    
    Configuración aplicada
    runtime: python39
    service: service-a
    instance_class: F4
    default values:
    ..
    ..
    runtime: python39
    service: service-a
    default values:
    instance_class: F1
    ..
    ..

    version1 se configura con instance_class: F4, mientras que version2, que no ha proporcionado ningún valor para instance_class, se configura con el valor predeterminado instance_class: F1.

    En Cloud Run, se aplican los ajustes de configuración que se proporcionen, pero los que no se proporcionen mantienen sus valores. Solo tiene que proporcionar valores para los ajustes que quiera cambiar. Por ejemplo:

    Servicio de Cloud Run: revisión 1 Cloud Run service-a revision2
    Comando de despliegue
    gcloud run deploy service-a \
    --cpu=4
    
    gcloud run deploy service-a
    
    Configuración aplicada
    service: service-a
    vCPUs: 4
    default values:
    ..
    ..
    service: service-a
    vCPUs: 4
    default values:
    ..
    ..

    En App Engine, si se realiza un despliegue sin ajustes de configuración, se crea una versión con todos los ajustes predeterminados. En Cloud Run, si se hace un despliegue sin ajustes de configuración, se crea una revisión con los mismos ajustes de configuración que la revisión anterior. En la primera revisión de un servicio de Cloud Run, si se despliega sin ajustes de configuración, se crea una revisión con todos los ajustes predeterminados.

    Valores predeterminados de configuración

    Ajuste de configuración Entorno estándar de App Engine Entorno flexible de App Engine Cloud Run
    Recursos de computación F1 1 vCPU, 0,6 GB 1 vCPU y 512 MB
    Simultaneidad máxima (solicitudes) 10 Ninguno 80
    Tiempo de espera de solicitud
    • Escalado automático: 10 minutos
    • Escalado manual o básico: 24 horas
    60 minutos 5 minutos
    Uso de CPU objetivo 60 % 50 % 60 %
    Número máximo de instancias Ninguno 20 100
    Número mínimo de instancias 0 2 0

    Punto de entrada

    Cuando se implementa desde el origen, App Engine lee el comando de punto de entrada del atributo entrypoint en el archivo app.yaml. Si no se proporciona ningún punto de entrada, se utiliza un valor predeterminado específico del tiempo de ejecución. Cloud Run usa buildpacks de Google Cloud al desplegar desde una fuente. Algunos lenguajes no tienen un punto de entrada predeterminado, por lo que debes proporcionar uno o la compilación fallará. Por ejemplo, los paquetes de compilación de Python requieren un Procfile o especificar la variable de entorno de compilación GOOGLE_ENTRYPOINT.

    Consulta la documentación de los buildpacks para ver los requisitos de configuración específicos de cada lenguaje.

    Comprobaciones del estado

    En App Engine, las comprobaciones del estado son en gran medida automáticas y las gestiona la plataforma. App Engine realiza comprobaciones de actividad y de disponibilidad para determinar si una instancia está operativa y lista para atender el tráfico. Si una instancia no supera las comprobaciones automáticas de forma constante, App Engine la finaliza y la sustituye por una nueva para asegurar la continuidad del servicio.

    Cloud Run ofrece un control más granular con sondas de inicio y de vivacidad configurables. Estas sondas te permiten definir una instancia correcta, lo cual es fundamental para los microservicios complejos.

    En Cloud Run, puede configurar las siguientes sondas:

    • Sonda de inicio para definir cuándo se ha iniciado un contenedor y está listo para servir tráfico. Cuando configuras una sonda de inicio, se inhabilitan las comprobaciones de actividad hasta que el inicio se realiza correctamente, lo que asegura que las sondas de actividad no interfieran con el inicio de la aplicación.

    • Sonda de actividad para determinar cuándo reiniciar un contenedor. Por ejemplo, las sondas de actividad pueden detectar un interbloqueo cuando una aplicación se está ejecutando, pero no puede avanzar. Reiniciar un contenedor en ese estado asegura que tu aplicación esté disponible a pesar de los errores.

    Para obtener más información, consulta Configurar comprobaciones del estado de los contenedores para los servicios.

    Escalado

    Aunque Cloud Run y el entorno estándar de App Engine comparten una infraestructura de escalado similar, Cloud Run se ha optimizado para ofrecer un escalado más rápido y la posibilidad de reducir la escala a cero. Esto da como resultado menos ajustes configurables. Esta simplificación limita los ajustes configurables a los siguientes:

    En las instancias de Cloud Run, la utilización de CPU objetivo no se puede configurar, sino que se fija en el 60%. Para obtener más información, consulta el artículo Acerca del escalado automático de instancias en servicios de Cloud Run.

    El entorno flexible de App Engine usa la herramienta de escalado automático de Compute Engine y, por lo tanto, tiene características de escalado muy diferentes a las del entorno estándar de App Engine y Cloud Run.

    Migrar controles de escalado de App Engine a Cloud Run

    En esta sección se describe cómo asignar la configuración de escalado de App Engine a Cloud Run.

    Número mínimo de instancias (calentamiento)

    Mantén un número mínimo de instancias activas para gestionar el tráfico base y evitar los arranques en frío.

    Entorno de configuración Ajustes
    Entorno estándar de App Engine min_instances: N
    Entorno flexible de App Engine automatic_scaling:
      min_num_instances: N
    Cloud Run Nivel de servicio: scaling.min_instance_count: N
    Nivel de revisión: template.scaling.min_instance_count: N

    Estrategia de migración: define el número mínimo de instancias para el calentamiento a nivel de servicio. Si diriges el tráfico a una revisión específica, el ajuste a nivel de revisión anula el valor predeterminado a nivel de servicio. Usa este ajuste para probar una nueva revisión con un número mínimo de instancias diferente antes de promocionarla a producción.

    Número máximo de instancias

    Define un límite estricto en el número total de instancias para controlar los costes y proteger las dependencias posteriores.

    Entorno de configuración Ajustes
    Entorno estándar de App Engine max_instances: N
    Entorno flexible de App Engine automatic_scaling:
      max_num_instances: N
    Cloud Run Nivel de servicio: scaling.max_instance_count: N
    Nivel de revisión: template.scaling.max_instance_count: N

    Estrategia de migración: define un límite global a nivel de servicio. Cloud Run aplica el valor más bajo de los ajustes de nivel de servicio y de nivel de revisión. Para obtener más información, consulta Definir el número máximo de instancias de los servicios.

    Simultaneidad

    Define la capacidad de solicitudes de una sola instancia.

    Entorno de configuración Ajustes
    Entorno estándar de App Engine max_concurrent_requests: N
    Entorno flexible de App Engine automatic_scaling:
      target_concurrent_requests: N
    Cloud Run template.maxInstanceRequestConcurrency: N

    Estrategia de migración: sigue una de estas dos estrategias de migración:

    • Empieza con el valor predeterminado de capacidad de instancia de Cloud Run, que es 80, y haz pruebas de carga para encontrar el límite de simultaneidad estable de tu aplicación en Cloud Run. Ajustar este valor es una forma eficaz de optimizar el rendimiento y los costes en Cloud Run. Reduce el valor de 80 en función de los resultados de las pruebas. Para obtener más información, consulta Configurar el número máximo de solicitudes simultáneas por instancia.

    • Usa el valor de configuración que ya tengas en el entorno estándar de App Engine, que es de 10 solicitudes simultáneas por instancia de forma predeterminada. Es una opción segura, ya que se trata de una configuración conocida que funciona en tu aplicación. Sin embargo, esto puede provocar una infrautilización significativa de tus instancias de Cloud Run y, potencialmente, un aumento de los costes, ya que el autoescalador crea más instancias de las necesarias para gestionar la carga.

    Uso de CPU

    Escala cuando la carga de la CPU supere un umbral determinado.

    Entorno de configuración Ajustes
    Entorno estándar de App Engine target_cpu_utilization: 0.X
    Entorno flexible de App Engine automatic_scaling:
      cpu_utilization:
      target_utilization: N
    Cloud Run No hay ningún equivalente directo (se fija en aproximadamente el 60%)

    Estrategia de migración: no puedes configurar este valor. El autoescalador de Cloud Run mantiene un uso de CPU de aproximadamente el 60% en las instancias activas. A diferencia de App Engine, Cloud Run solo asigna CPU durante el procesamiento de solicitudes y, en el resto de los casos, la limita a cero. En el entorno estándar de App Engine, independientemente del tipo de escalado que configures, App Engine se asegura de que la CPU esté disponible continuamente para tu instancia.

    Si tu aplicación realiza alguna tarea en segundo plano entre solicitudes, como usar hilos en segundo plano en el escalado básico o manual, configura la facturación basada en instancias en Cloud Run para evitar que se suspendan tus tareas de procesamiento en segundo plano.

    Rendimiento de solicitud

    Escala en función del rendimiento de las solicitudes cuando tu aplicación alcance el límite de simultaneidad.

    Entorno de configuración Ajustes
    Entorno estándar de App Engine target_throughput_utilization: 0.X
    Entorno flexible de App Engine No disponible
    Cloud Run Ajustar la configuración de template.maxInstanceRequestConcurrency

    Estrategia de migración: la herramienta de escalado automático de Cloud Run intenta mantener el número de solicitudes simultáneas por instancia en el 60% del valor de maxInstanceRequestConcurrency. Cuando define este valor, implícitamente define el rendimiento de destino que activa un evento de escalado vertical.

    Latencia

    Define un periodo de espera de los usuarios que active el escalado. App Engine reacciona parcialmente a la puesta en cola de solicitudes.

    Entorno de configuración Ajustes
    Entorno estándar de App Engine min_pending_latency y max_pending_latency
    Entorno flexible de App Engine No disponible
    Cloud Run No hay ningún equivalente directo

    Estrategia de migración: Cloud Run escala automáticamente antes de que las solicitudes empiecen a ponerse en cola y se produzcan picos de latencia. Si se producen picos de latencia, considera la posibilidad de ajustar el valor de template.maxInstanceRequestConcurrency para que el escalado horizontal sea más rápido.

    Instancias inactivas

    Propósito: en App Engine, los ajustes de instancias inactivas controlan un grupo de instancias inactivas precalentadas que absorben los picos de tráfico y controlan los costes.

    Entorno de configuración Ajustes
    Entorno estándar de App Engine min_idle_instances: N
    o
    max_idle_instances: N
    Entorno flexible de App Engine No disponible
    Cloud Run No hay ningún equivalente directo

    Estrategia de migración: no puedes configurar un número mínimo o máximo de instancias inactivas en Cloud Run. Para mantener las instancias activas y listas para recibir tráfico inmediato, y para mitigar los arranques en frío en Cloud Run, usa el ajuste scaling.min_instance_count, que asegura que siempre se ejecute un número mínimo de contenedores. Para obtener más información, consulta el artículo Acerca del escalado automático de instancias en los servicios de Cloud Run.

    Tiempo de espera de instancia inactiva

    En App Engine, las instancias inactivas permanecen activas durante aproximadamente 15 minutos después de la última solicitud. Cloud Run controla este comportamiento mediante su ajuste de facturación.

    Para conseguir un comportamiento de facturación similar al de App Engine, donde la CPU se asigna fuera del procesamiento de solicitudes, usa la facturación basada en instancias en Cloud Run.

    También puedes usar la facturación basada en solicitudes para que la CPU solo se asigne durante el procesamiento de solicitudes. Con este ajuste, la instancia seguirá activa durante un máximo de 15 minutos después de la última solicitud, pero la CPU se limitará durante ese tiempo de inactividad.

    Escalado básico

    Entorno de configuración Ajustes
    Entorno estándar de App Engine basic_scaling: max_instances: N
    Entorno flexible de App Engine No disponible
    Cloud Run Escalado automático predeterminado.
    scaling.min_instance_count: 0
    scaling.max_instance_count: N

    Cuando configuras el ajuste basic_scaling en el entorno estándar de App Engine, se crean instancias cuando se reciben solicitudes y se reduce a cero después de un periodo de inactividad. Puedes replicar este comportamiento en Cloud Run mediante el escalado automático configurando min-instances en 0.

    Escalado manual

    Ejecuta un número fijo de instancias e inhabilita el autoescalado.

    Entorno de configuración Ajustes
    Entorno estándar de App Engine manual_scaling: instances: N
    Entorno flexible de App Engine manual_scaling: instances: N
    Cloud Run scalingMode: MANUAL
      manualInstanceCount: N

    Estrategia de migración: en Cloud Run, hay una asignación directa para el escalado manual. Define el modo de escalado como MANUAL en el nivel de servicio de Cloud Run y especifica el número exacto de instancias que se van a ejecutar con manualInstanceCount. Esto tiene el mismo efecto que inhabilitar por completo el ajuste de escala automático. Para obtener más información, consulta Escalado manual en Cloud Run.

    Periodo de enfriamiento

    Configura un periodo de enfriamiento después de un evento de escalado vertical antes de que se produzca otro evento.

    Entorno de configuración Ajustes
    Entorno estándar de App Engine No disponible
    Entorno flexible de App Engine automatic_scaling:
      cool_down_period_sec: N
    Cloud Run No hay ningún equivalente directo

    Estrategia de migración: no es necesaria. Cloud Run se escala automáticamente en función de la demanda y la utilización, y se ha diseñado para reaccionar de forma eficiente sin necesidad de configurar un periodo de enfriamiento manual.

    Solicitudes de preparación

    Cloud Run activa automáticamente las instancias mediante el comando entrypoint del contenedor, por lo que no tienes que habilitar manualmente las solicitudes de activación ni configurar un controlador /_ah/warmup. Si tienes código que quieres ejecutar al iniciar la instancia antes de que se procese ninguna solicitud, puedes hacer lo siguiente:

    Contenido estático

    En el entorno estándar de App Engine, puedes publicar contenido estático sin usar recursos de computación publicándolo desde Cloud Storage o configurando gestores.Cloud Run no tiene la opción de gestores para publicar contenido estático, por lo que puedes publicar el contenido desde el servicio Cloud Run (igual que el contenido dinámico) o desde Cloud Storage.

    Rol Invocador de Cloud Run

    Cloud Run también ofrece la posibilidad de controlar el acceso a un servicio con Gestión de Identidades y Accesos (IAM). Los enlaces de políticas de gestión de identidades y accesos de un servicio se pueden configurar mediante la CLI de gcloud, la consola o Terraform.

    Para replicar el comportamiento de App Engine, puedes hacer que el servicio sea público permitiendo las solicitudes sin autenticar. Se puede definir durante la implementación o actualizando los enlaces de la política de gestión de identidades y accesos en un servicio.

    Implementación

    Usa la marca de implementación --allow-unauthenticated:

    gcloud run deploy SERVICE_NAME ... --allow-unauthenticated

    Servicio actual

    Usa el comando gcloud run services add-iam-policy-binding:

    gcloud run services add-iam-policy-binding SERVICE_NAME \
    --member="allUsers" \
    --role="roles/run.invoker"

    donde SERVICE_NAME es el nombre del servicio de Cloud Run.

    También puedes controlar quién tiene acceso al servicio concediendo el rol de gestión de identidades y accesos Invocador de Cloud Run, que se puede configurar por servicio.

    Implementación

    gcloud run deploy SERVICE_NAME ... --no-allow-unauthenticated
    gcloud run services add-iam-policy-binding SERVICE_NAME \
    --member=MEMBER_TYPE \
    --role="roles/run.invoker"

    donde SERVICE_NAME es el nombre del servicio y MEMBER_TYPE es el tipo de principal. Por ejemplo, user:email@domain.com.

    Para ver una lista de los valores aceptables de MEMBER_TYPE, consulta Identificadores principales.

    Servicio actual

    gcloud run services add-iam-policy-binding SERVICE_NAME \
    --member=MEMBER_TYPE \
    --role="roles/run.invoker"

    donde SERVICE_NAME es el nombre del servicio y MEMBER_TYPE es el tipo de principal. Por ejemplo, user:email@domain.com.

    Para ver una lista de los valores aceptables de MEMBER_TYPE, consulta Identificadores principales.

    Variables de entorno y metadatos

    Tanto App Engine como Cloud Run tienen determinadas variables de entorno que se definen automáticamente. En la siguiente tabla se muestran las variables de entorno de App Engine y sus equivalentes en Cloud Run. Cloud Run solo implementa unas pocas variables de entorno, en comparación con App Engine, pero los datos disponibles en el servidor de metadatos son prácticamente los mismos.

    Variables de entorno predeterminadas

    Nombre de App Engine Nombre de {[cloud_run_name]} Descripción
    GAE_SERVICE K_SERVICE El nombre del servicio actual. En App Engine, se asigna el valor `default` si no se especifica.
    GAE_VERSION K_REVISION La etiqueta de la versión actual de tu servicio.
    PORT PORT El puerto que recibe solicitudes HTTP.
    N/A K_CONFIGURATION Nombre de la configuración de Cloud Run que ha creado la revisión.
    GOOGLE_CLOUD_PROJECT N/A El ID de proyecto Google Cloud asociado a tu aplicación.
    GAE_APPLICATION El ID de tu aplicación de App Engine. Este ID tiene el prefijo "region code~", como "e~" en el caso de las aplicaciones implementadas en Europa.
    GAE_DEPLOYMENT_ID ID de la implementación actual.
    GAE_ENV El entorno de App Engine. Se define como `standard` si está en el entorno estándar.
    GAE_INSTANCE El ID de la instancia en la que se ejecuta tu servicio.
    GAE_MEMORY_MB Cantidad de memoria disponible para el proceso de la aplicación, en MB.
    NODE_ENV (solo disponible en el entorno de ejecución de Node.js) Configúralo como producción cuando se haya implementado tu servicio.
    GAE_RUNTIME El entorno de ejecución especificado en el archivo app.yaml.

    Rutas comunes del servidor de metadatos

    Ruta Descripción Ejemplo
    /computeMetadata/v1/project/project-id ID del proyecto al que pertenece el servicio. test_project
    /computeMetadata/v1/project/numeric-project-id Número de proyecto al que pertenece el servicio 12345678912
    /computeMetadata/v1/instance/id Identificador único de la instancia del contenedor (también disponible en los registros). 16a61494692b7432806a16
    (cadena de caracteres alfanuméricos)
    /computeMetadata/v1/instance/region
    ** No disponible en el entorno flexible de App Engine
    Región de este servicio. Devuelve projects/PROJECT_NUMBER/regions/REGION. projects/12345678912/regions/us-central1
    /computeMetadata/v1/instance/service-accounts/default/email Correo de la cuenta de servicio de tiempo de ejecución de este servicio. service_account@test_project.iam.gserviceaccount.com
    /computeMetadata/v1/instance/service-accounts/default/token Genera un token de acceso OAuth2 para la cuenta de servicio de este servicio. Este endpoint devolverá una respuesta JSON con un atributo access_token. {
    "access_token":"<TOKEN>",
    "expires_in":1799,
    "token_type":"Bearer"
    }

    Siguientes pasos