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.
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
|
|
|||||||||||||||||||
| URL de la versión o revisión |
https://VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com
|
|
|||||||||||||||||||
Escalado |
|||||||||||||||||||||
| Escalado automático | Sí | Sí | Sí | ||||||||||||||||||
| Escalado manual | Sí | Sí | Sí | ||||||||||||||||||
| Escalado a cero | Sí | No | Sí | ||||||||||||||||||
| 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 |
|
60 minutos | Se puede configurar hasta 60 minutos (el valor predeterminado es 5 minutos). | ||||||||||||||||||
Implementación |
|||||||||||||||||||||
| De la fuente | Sí | Sí | |||||||||||||||||||
| Imagen de contenedor | No | Sí (runtimes personalizados) | Sí | ||||||||||||||||||
| Contenedores sidecar | No | Sí. 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 |
|
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 | Sí | |||||||||||||||||||
| Facturación basada en instancias (coste por hora de instancia) | Instancia F4/B4: 0,2 USD |
|
|
||||||||||||||||||
Seguridad |
|||||||||||||||||||||
| Configuración de entrada | Sí | Sí | Sí | ||||||||||||||||||
| Rol de invocador | No | Sí | |||||||||||||||||||
| IAP | Sí | Sí | Sí | ||||||||||||||||||
| Cortafuegos | Sí | Sí | Configurar con Google Cloud Armor | ||||||||||||||||||
| Secret Manager | Sí, con las bibliotecas de cliente de Cloud. | Sí. Puedes montar cada secreto como un volumen o pasar un secreto mediante variables de entorno. | |||||||||||||||||||
Conectividad |
|||||||||||||||||||||
| Dominios personalizados | Sí | Sí | Sí | ||||||||||||||||||
| Conectividad de VPC (incluida la VPC compartida) | Sí | N/A | Sí | ||||||||||||||||||
| Configuración de salida de VPC | Sí | N/A | Sí | ||||||||||||||||||
| Balanceo de carga multirregional | No | Sí | |||||||||||||||||||
| Streaming del servidor | No | Sí | |||||||||||||||||||
Acceder a los servicios de Google Cloud |
|||||||||||||||||||||
| Cloud SQL | Sí | Sí | Sí | ||||||||||||||||||
| 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 | Sí (solo Java, Python, Go y PHP) | No | No | ||||||||||||||||||
Modelo de recurso
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
defaultcorrespondiente. - 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, dondeREVISION_SUFFIXse 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.appyhttps://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: |
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 |
|
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:
- Simultaneidad máxima
- Instancias máximas y mínimas
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: MANUALmanualInstanceCount: 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:
- Configurar la aplicación para que escuche las solicitudes
- Configurar una sonda de inicio personalizada
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
- Guía de inicio rápido: despliega un servicio web con Cloud Run
- ¿Mi aplicación es adecuada para Cloud Run?
- Migrar mi dominio personalizado de App Engine a Cloud Load Balancing
- Otros recursos:
- Migrar de App Engine a Cloud Run con Docker (Python: laboratorio, vídeo; Java: laboratorio)
- Migrar de App Engine a Cloud Run con buildpacks (Python: laboratorio, vídeo; Java: laboratorio)