API de Cloud Storage

Descripción general

Cloud Storage ofrece dos API: una API de XML y una de JSON. Gsutil puede interactuar con ambas API. De forma predeterminada, las versiones de gsutil que comienzan con 4.0 interactúan con la API de JSON. Si no es posible ejecutar un comando mediante una de las API (por ejemplo, el comando de notificación no es compatible con la API de XML), gsutil volverá a usar la otra API de forma silenciosa. Además, gsutil volverá a usar la API de XML de forma automática cuando interactúe con proveedores de almacenamiento en la nube que solo admiten esa API.

Consulta la documentación sobre la API de JSON o la API de XML para obtener más información.

Configura qué API se usa

A fin de usar una API determinada para interactuar con Cloud Storage, puedes configurar la variable “prefer_api” en la sección “GSUtil” del archivo de configuración .boto como “xml” o “json” de la siguiente manera:

prefer_api = json

Esto hará que gsutil use esa API siempre que sea posible (y recurrirá a la otra API en algunos casos, como se indica más arriba). Esto también se aplica al comando de prueba de gsutil, que ejecutará pruebas de integración en la API de preferencia.

Consulta la documentación sobre el archivo de configuración boto para obtener más información.

Diferencias en el rendimiento y los costos entre las API

La API de XML usa el framework boto. Este framework vuelve a leer los archivos descargados para calcular un hash MD5 si no hay uno presente. En el caso de los objetos que no incluyen los hashes MD5 en los metadatos (por ejemplo, objetos compuestos de Cloud Storage), se duplica el ancho de banda consumido y el tiempo transcurrido que se necesita para la descarga. Por lo tanto, si trabajas con objetos compuestos, se recomienda que uses el valor predeterminado para prefer_api.

La API de XML también requiere llamadas separadas para obtener diferentes campos de metadatos de objetos y depósitos, como las LCA o la configuración de depósito. Por lo tanto, usar la API de JSON cuando sea posible usa menos operaciones (y, por lo tanto, tiene un costo menor).