Usar Cloud Storage

Si tu app necesita leer y escribir archivos en el entorno de ejecución o precisa entregar archivos, como películas, imágenes o algún otro contenido estático, te recomendamos usar un bucket de Cloud Storage.

Cuando creas una aplicación, App Engine crea un bucket predeterminado. Este bucket proporciona los primeros 5 GB de forma gratuita y también incluye una cuota gratis para las operaciones de E/S. Puedes crear otros depósitos de Cloud Storage, pero solo el predeterminado incluye de forma gratuita los primeros 5 GB de almacenamiento.

Cómo usar Cloud Storage con App Engine

Para usar un bucket de Cloud Storage desde una app de App Engine, sigue estos pasos:

  1. Visualiza los nombres de los depósitos existentes en tu proyecto de App Engine. Deberás especificar estos nombres cuando subas o descargues datos de Cloud Storage.

    Te recomendamos guardar los nombres de tus depósitos de Cloud Storage en las variables de entorno de tu app, en lugar de codificarlos (hard-coding) en ella.

  2. En tu app, haz lo siguiente para declarar Cloud Storage como una dependencia:

    Go

    Usa el comando go get cloud.google.com/go/storage. De manera alternativa, puedes declarar dependencias en el archivo go.mod de tu app. Obtén más información sobre cómo especificar dependencias.

    Usa la biblioteca cliente de Google Cloud para subir o descargar datos de tus depósitos.

    Para obtener información sobre cómo entregar contenido estático, consulta la sección sobre almacenamiento y entrega de archivos estáticos.

    Java

    Agrega la biblioteca al archivo de dependencias de tu app.

    Usa la biblioteca cliente de Google Cloud para subir o descargar datos de tus depósitos.

    Para obtener información sobre cómo entregar contenido estático, consulta la sección sobre almacenamiento y entrega de archivos estáticos.

    Node.js

    En app.yaml, agrega el ID del proyecto al valor de entorno GOOGLE_CLOUD_PROJECT. Luego, configura el valor de entorno GCLOUD_STORAGE_BUCKET con el nombre del bucket de Cloud Storage que creaste antes.

    Agrega @google-cloud/storage al archivo package.json de la app. Obtén más información sobre cómo especificar dependencias.

    Usa la biblioteca cliente de Google Cloud para subir o descargar datos de tus depósitos.

    Para obtener información sobre cómo entregar contenido estático, consulta la sección sobre almacenamiento y entrega de archivos estáticos.

    Consulta el archivo README.md para obtener instrucciones sobre cómo ejecutar y probar de manera local.

    PHP

    Agrega google/cloud-storage al archivo composer.json de la app y ejecuta composer install desde el directorio de la app. Obtén más información sobre cómo especificar dependencias.

    Registra Google\Cloud\Storage\StorageClient como el wrapper de transmisión de tu app. Luego, usa el protocolo gs para leer y escribir archivos.

    Consulta un ejemplo de registro y uso del wrapper de transmisión.

    Como alternativa, puedes usar la biblioteca cliente de Google Cloud directamente.

    Python

    Agrega google-cloud-storage al archivo requirements.txt de la app. Obtén más información sobre cómo especificar dependencias.

    Usa la biblioteca cliente de Google Cloud para subir o descargar datos de tus depósitos.

    Para obtener información sobre cómo entregar contenido estático, consulta la sección sobre almacenamiento y entrega de archivos estáticos.

    Ruby

    Agrega google-cloud-storage al Gemfile de tu app. Obtén más información sobre cómo especificar dependencias.

    Usa la biblioteca cliente de Google Cloud para subir o descargar datos de tus depósitos.

    Para obtener información sobre cómo entregar contenido estático, consulta la sección sobre almacenamiento y entrega de archivos estáticos.

Usa el bucket predeterminado

Cuando creas una aplicación, App Engine crea un bucket predeterminado que te ofrece los primeros 5 GB de almacenamiento sin costo. El bucket predeterminado también incluye una cuota gratuita para operaciones de E/S de Cloud Storage. Consulta Precios, cuotas y límites para obtener más detalles. Se te cobrará por el almacenamiento que supere los 5 GB.

El nombre del bucket predeterminado tendrá el siguiente formato:

project-id.appspot.com

Además, App Engine crea un bucket que usa para almacenamiento temporal cuando implementa versiones nuevas de tu aplicación. Este bucket, llamado staging.project-id.appspot.com, es para uso único de App Engine. Las aplicaciones no pueden interactuar con este bucket.

Configura los permisos del bucket

La cuenta de servicio asociada con tu app necesita permisos para leer y escribir en los buckets de tu proyecto. A fin de saber qué permisos son necesarios, consulta Roles de IAM para Cloud Storage.

Por lo general, la cuenta de servicio asociada con tu app es la cuenta de servicio predeterminada de App Engine.

Según la configuración de la política de la organización, es posible que a la cuenta de servicio predeterminada se le otorgue automáticamente el rol de editor en tu proyecto. Te recomendamos inhabilitar la concesión automática de roles; para ello, aplica la restricción de la política de la organización iam.automaticIamGrantsForDefaultServiceAccounts. Si creaste tu organización después del 3 de mayo de 2024, esta restricción se aplica de forma predeterminada.

Si inhabilitas la concesión automática de roles, debes decidir qué roles se deben otorgar a las cuentas de servicio predeterminadas y, luego, otorgar estos roles a ti mismo.

Si la cuenta de servicio predeterminada ya tiene el rol de editor, te recomendamos que reemplaces el rol de editor por roles menos permisivos. Para modificar de forma segura los roles de la cuenta de servicio, usa Policy Simulator para ver el impacto del cambio y, luego, otorga y revoca los roles adecuados.

Para obtener más información sobre cómo darles acceso a otros usuarios, aplicaciones o proyectos a un bucket y sus contenidos, consulta Configura los permisos del bucket.

Usa Cloud Storage con el servidor de desarrollo local

El servidor de desarrollo local de App Engine no emula a Cloud Storage, por lo que todas las solicitudes de Cloud Storage deben enviarse por Internet a un bucket de Cloud Storage real.

Precios, cuotas y límites

No existen cargos de ancho de banda asociados con las llamadas de la biblioteca cliente de Cloud Storage a Cloud Storage. Sin embargo, sí se aplican cargos por operaciones. Además, las llamadas se imputarán a la cuota de recuperación de URL, ya que la biblioteca usa el servicio de recuperación de URL para interactuar con Cloud Storage.

Ten en cuenta que Cloud Storage es un servicio de pago por uso. Se te cobrará de acuerdo con la hoja de precios de Cloud Storage.