Cloud Storage

El conector de Google Cloud Storage le permite conectarse a Google Cloud Storage y realizar operaciones de transferencia de archivos.

Antes de empezar

Antes de usar el conector de Cloud Storage, realiza las siguientes tareas:

  • En tu proyecto de Google Cloud:
    • Asegúrate de que la conectividad de red esté configurada. Para obtener información sobre los patrones de red, consulta Conectividad de red.
    • Concede el rol de gestión de identidades y accesos roles/connectors.admin al usuario que configure el conector.
    • Concede los siguientes roles de gestión de identidades y accesos a la cuenta de servicio que quieras usar para el conector:
      • roles/secretmanager.viewer
      • roles/secretmanager.secretAccessor
      • roles/storage.admin

      Una cuenta de servicio es un tipo especial de cuenta de Google diseñada para representar a un usuario no humano que necesita autenticarse y disponer de autorización para acceder a los datos de las APIs de Google. Si no tienes una cuenta de servicio, debes crearla. El conector y la cuenta de servicio deben pertenecer al mismo proyecto. Para obtener más información, consulta el artículo Crear una cuenta de servicio.

    • Habilita los siguientes servicios:
      • secretmanager.googleapis.com (API Secret Manager)
      • connectors.googleapis.com (API Connectors)

      Para saber cómo habilitar servicios, consulta Habilitar servicios.

    Si estos servicios o permisos no se han habilitado en tu proyecto anteriormente, se te pedirá que los habilites al configurar el conector.

Configurar el conector

Una conexión es específica de una fuente de datos. Esto significa que, si tiene muchas fuentes de datos, debe crear una conexión independiente para cada una de ellas. Para crear una conexión, sigue estos pasos:

  1. En la consola de Cloud, ve a la página Integration Connectors > Connections (Conectores de integración > Conexiones) y, a continuación, selecciona o crea un proyecto de Google Cloud.

    Ve a la página Conexiones.

  2. Haz clic en + CREAR NUEVA para abrir la página Crear conexión.
  3. En la sección Ubicación, elige la ubicación de la conexión.
    1. Región: selecciona una ubicación de la lista desplegable.

      Para ver la lista de todas las regiones admitidas, consulta Ubicaciones.

    2. Haz clic en SIGUIENTE.
  4. En la sección Detalles de la conexión, haz lo siguiente:
    1. Conector: selecciona Cloud Storage en la lista desplegable de conectores disponibles.
    2. Versión del conector: seleccione la versión del conector en la lista desplegable de versiones disponibles.
    3. En el campo Connection Name (Nombre de conexión), introduce un nombre para la instancia de conexión.

      Los nombres de las conexiones deben cumplir los siguientes criterios:

      • Los nombres de conexión pueden contener letras, números o guiones.
      • Las letras deben estar en minúsculas.
      • Los nombres de conexión deben empezar por una letra y terminar por una letra o un número.
      • Los nombres de conexión no pueden tener más de 49 caracteres.
    4. Si quiere, puede introducir una Descripción para la instancia de conexión.
    5. También puedes habilitar Registro en la nube y, a continuación, seleccionar un nivel de registro. De forma predeterminada, el nivel de registro es Error.
    6. Cuenta de servicio: selecciona una cuenta de servicio que tenga los roles necesarios.
    7. Si quieres, configura los ajustes del nodo de conexión:

      • Número mínimo de nodos: introduce el número mínimo de nodos de conexión.
      • Número máximo de nodos: introduce el número máximo de nodos de conexión.

      Un nodo es una unidad (o réplica) de una conexión que procesa transacciones. Se necesitan más nodos para procesar más transacciones en una conexión y, a la inversa, se necesitan menos nodos para procesar menos transacciones. Para saber cómo influyen los nodos en el precio de tu conector, consulta la sección Precios de los nodos de conexión. Si no introduces ningún valor, de forma predeterminada, el número mínimo de nodos se establece en 2 (para mejorar la disponibilidad) y el máximo en 50.

    8. ID del proyecto: ID del proyecto de Google Cloud en el que se encuentran los datos.
    9. También puedes hacer clic en + AÑADIR ETIQUETA para añadir una etiqueta a la conexión en forma de par clave-valor.
    10. Haz clic en SIGUIENTE.
  5. Revisar: revisa tu conexión.
  6. Haz clic en Crear.

Entidades, operaciones y acciones

Todos los conectores de integración proporcionan una capa de abstracción para los objetos de la aplicación conectada. Solo puedes acceder a los objetos de una aplicación a través de esta abstracción. La abstracción se te muestra como entidades, operaciones y acciones.

  • Entidad: una entidad se puede considerar como un objeto o un conjunto de propiedades en la aplicación o el servicio conectados. La definición de una entidad varía de un conector a otro. Por ejemplo, en un conector de base de datos, las tablas son las entidades; en un conector de servidor de archivos, las carpetas son las entidades; y en un conector de sistema de mensajería, las colas son las entidades.

    Sin embargo, es posible que un conector no admita o no tenga ninguna entidad. En ese caso, la lista Entities estará vacía.

  • Operación: una operación es la actividad que puedes realizar en una entidad. Puedes realizar cualquiera de las siguientes operaciones en una entidad:

    Al seleccionar una entidad de la lista disponible, se genera una lista de operaciones disponibles para la entidad. Para ver una descripción detallada de las operaciones, consulta las operaciones de entidades de la tarea Connectors. Sin embargo, si un conector no admite ninguna de las operaciones de entidad, esas operaciones no admitidas no se mostrarán en la lista Operations.

  • Acción: una acción es una función de primera clase que se pone a disposición de la integración a través de la interfaz del conector. Una acción te permite hacer cambios en una o varias entidades y varía de un conector a otro. Normalmente, una acción tendrá algunos parámetros de entrada y un parámetro de salida. Sin embargo, es posible que un conector no admita ninguna acción, en cuyo caso la lista Actions estará vacía.

Limitaciones del sistema

El conector de Google Cloud Storage puede procesar un máximo de 10 transacciones por segundo por nodo y limita las transacciones que superen este límite. De forma predeterminada, Integration Connectors asigna 2 nodos (para mejorar la disponibilidad) a una conexión.

Para obtener información sobre los límites aplicables a Integration Connectors, consulta Límites.

Acciones

La conexión de Google Cloud Storage admite las siguientes acciones:

Acción DownloadObject

En la siguiente tabla se describen los parámetros de entrada de la acción DownloadObject.

Nombre del parámetro Obligatorio Tipo de datos Descripción
Segmento Cadena Nombre del segmento en el que se encuentra el objeto que se va a descargar.
ObjectFilePath No Cadena Nombre del objeto que se debe descargar. Si no se especifica, se descargarán todos los objetos del cubo especificado.

Si el objeto que quieres descargar se encuentra en una subcarpeta de un segmento, debes proporcionar la ruta completa del objeto. Por ejemplo, para descargar logfile.txt que se encuentra en folderA de bucket_01, la ruta del objeto debe ser folderA/logfile.txt.

HasBytes No Booleano Indica si se debe descargar el contenido como bytes. Los valores válidos son true y false. Si se define como true, el contenido se descarga como una cadena codificada en Base64.

De forma predeterminada, el campo HasBytes tiene el valor false.

UpdatedEndDate No Fecha El periodo de finalización para descargar objetos. Si no se especifica, los objetos se descargarán desde la UpdatedStartDate especificada hasta el día actual.
UpdatedStartDate No Fecha Fecha de inicio del periodo para descargar objetos. Si no se especifica, los objetos se descargarán desde el inicio del periodo hasta UpdatedEndDate.

Para ver ejemplos de cómo configurar la acción DownloadObject, consulta Ejemplos.

Acción UploadObject

En la siguiente tabla se describen los parámetros de entrada de la acción UploadObject.

Nombre del parámetro Obligatorio Tipo de datos Descripción
Segmento Cadena Nombre del segmento en el que se subirá el objeto.
FolderPath No Cadena Ruta a la carpeta en la que se debe subir el objeto.
ContentBytes No Cadena Contenido que se va a subir en forma de bytes (cadena codificada en Base64).
HasBytes No Booleano Si se debe subir el contenido como bytes. Valores válidos: true o false. Si se define como true, el contenido que quieras subir debe ser una cadena codificada en Base64.

De forma predeterminada, el campo HasBytes tiene el valor false.

Contenido Cadena El contenido que se va a subir.
ObjectName No Cadena Nombre del objeto que se va a subir.

Para ver ejemplos de cómo configurar la acción UploadObject, consulta Ejemplos.

Acción CopyObject

En la siguiente tabla se describen los parámetros de entrada de la acción CopyObject.

Nombre del parámetro Obligatorio Tipo de datos Descripción
BucketSource Cadena Nombre del segmento del que quieres copiar el objeto.
ObjectSource Cadena Ruta completa de la carpeta en la que quieres copiar el objeto.
BucketDestination Cadena Nombre del segmento al que quieres copiar el objeto.
ObjectDestination No Cadena Ruta completa del destino, incluido el nombre del objeto. Si no especifica ningún nombre de objeto, se conservará el nombre del objeto de origen.

Para ver ejemplos de cómo configurar la acción CopyObject, consulta Ejemplos.

Acción MoveObject

En la siguiente tabla se describen los parámetros de entrada de la acción MoveObject.

Nombre del parámetro Obligatorio Tipo de datos Descripción
BucketSource Cadena Nombre del contenedor desde el que quieres mover el objeto.
ObjectSource Cadena Ruta completa de la carpeta a la que quieres mover el objeto.
BucketDestination Cadena Nombre del contenedor al que quieres mover el objeto.
ObjectDestination No Cadena Ruta completa del destino, incluido el nombre del objeto. Si no especifica ningún nombre de objeto, se conservará el nombre del objeto de origen.

Acción DeleteObject

En la siguiente tabla se describen los parámetros de entrada de la acción DeleteObject.

Nombre del parámetro Obligatorio Tipo de datos Descripción
BucketSource Cadena Nombre del segmento en el que se encuentra el objeto que se va a eliminar.
ObjectSource Cadena Nombre del objeto que quieres eliminar.
Generación No Doble Versión del objeto que se va a eliminar. Si se incluye, elimina la revisión especificada del objeto en lugar de la última versión, que es el comportamiento predeterminado.
IfGenerationMatch No Doble Hace que la operación de eliminación dependa de si la generación actual del objeto coincide con el valor proporcionado. Si se asigna el valor 0, la operación solo se realizará correctamente si no hay versiones activas del objeto.
IfGenerationNotMatch No Doble Hace que la operación de eliminación dependa de si la generación actual del objeto no coincide con el valor proporcionado. Si no existe ningún objeto publicado, la condición previa no se cumple. Si asignas el valor 0, la operación solo se realizará correctamente si hay una versión activa del objeto.
IfMetagenerationMatch No Doble Hace que la operación de eliminación dependa de si la metageneración actual del objeto coincide con el valor especificado.
IfMetagenerationNotMatch No Doble Hace que la operación de eliminación dependa de si la metageneración actual del objeto no coincide con el valor especificado.

Acción SignURL

En la siguiente tabla se describen los parámetros de entrada de la acción SignURL, que crea una URL firmada para el objeto especificado.

Nombre del parámetro Obligatorio Tipo de datos Descripción
Segmento Cadena Nombre del segmento en el que se encuentra el objeto.
Objeto Cadena Nombre del objeto para el que se va a generar la URL firmada.
RequestMethod No Cadena Método que usará la solicitud firmada. El valor predeterminado es GET.
Ubicación No Cadena Ubicación del segmento especificado. El valor predeterminado es auto.
ActiveDateTime No Cadena La fecha y la hora en las que la URL firmada se activará. Si no se especifica, se usará la fecha y hora actuales.
Consulta No Cadena La cadena de consulta que se debe incluir al usar SignedURL. Si no se especifica, no se usará ninguna cadena de consulta.
CustomHeaders No Cadena Lista separada por comas de los encabezados con el formato nombre=valor que se usarán con SignedURL. Si no se especifica, no se usarán encabezados personalizados.
ExpiresIn Cadena El tiempo de vencimiento de la URL firmada debe tener el formato 1d2h3m4s y el valor máximo es 7d0h0m0s.
ID de acceso HMAC Cadena El ID de acceso HMAC. Para obtener más información, consulta Claves HMAC.
Secreto de HMAC Cadena El secreto de HMAC.

Ejemplos

En los ejemplos de esta sección se describen las siguientes operaciones:

  • Mostrar todos los objetos
  • Mostrar todos los objetos de un segmento
  • Mostrar objetos usando el filtro LIKE para el nombre
  • Mostrar todos los segmentos
  • Descargar un objeto
  • Descargar un objeto binario
  • Subir un objeto binario a un segmento
  • Subir un objeto a un segmento
  • Subir un objeto a una carpeta
  • Copiar un objeto
  • Desplazamiento de un objeto
  • Eliminar un objeto
  • Crear una URL firmada para un objeto

En la siguiente tabla se muestran los ejemplos de situaciones y la configuración correspondiente en la tarea Conectores:

Tarea Configuración
Mostrar todos los objetos
  1. En el cuadro de diálogo Configure connector task, haz clic en Entities.
  2. Selecciona la entidad Objects y, a continuación, la operación List.
  3. Haz clic en Listo.

Se mostrarán todos los objetos de todos los segmentos. Los objetos se enumeran en el parámetro de respuesta connectorOutputPayload de la tarea Connectors.

Mostrar todos los objetos de un segmento
  1. En el cuadro de diálogo Configure connector task, haz clic en Entities.
  2. Selecciona la entidad Objects y, a continuación, la operación List.
  3. Haz clic en Listo.
  4. Asigna el valor filterClause al nombre del segmento del que quieras listar los objetos. Para definir la cláusula, en la sección Task Input de la tarea Connectors, haga clic en filterClause y, a continuación, introduzca Bucket = 'BUCKET_NAME' en el campo Valor predeterminado. Por ejemplo, Bucket = 'bucket_01'.
Mostrar objetos usando el filtro LIKE para el nombre
  1. En el cuadro de diálogo Configure connector task, haz clic en Entities.
  2. Selecciona la entidad Objects y, a continuación, la operación List.
  3. Haz clic en Listo.
  4. Asigna el valor filterClause al nombre del segmento del que quieras listar los objetos. Para definir la cláusula, en la sección Task Input de la tarea Connectors, haz clic en filterClause y, a continuación, introduce Name LIKE 'NAME%' AND Bucket = 'BUCKET_NAME' en el campo Valor predeterminado.

    Por ejemplo, Name LIKE 'Operations%' AND Bucket = 'OperationsBucket'.

Mostrar todos los segmentos
  1. En el cuadro de diálogo Configure connector task, haz clic en Entities.
  2. Selecciona la entidad Buckets y, a continuación, la operación List.
  3. Haz clic en Listo.
Descargar un objeto
  1. En el cuadro de diálogo Configure connector task, haz clic en Actions.
  2. Seleccione la acción DownloadObject y, a continuación, haga clic en Hecho.
  3. En la sección Entrada de tarea de la tarea Conectores, haz clic en connectorInputPayload y, a continuación, introduce un valor similar al siguiente en el campo Default Value:
    {
      "Bucket": "bucket-test-01",
      "ObjectFilePath": "logfile.txt"
    }
  4. En este ejemplo se descarga el archivo logfile.txt. El contenido del archivo descargado está disponible en formato JSON en el parámetro de respuesta connectorOutputPayload de la tarea Connectors.

Descargar un objeto binario

Los pasos para descargar un objeto binario son los mismos que para descargar un objeto normal, tal como se ha descrito anteriormente. Además, debes especificar HasBytes como true en el campo connectorInputPayload. De esta forma, se descarga el objeto como una cadena codificada en Base64. Valor de ejemplo del campo connectorInputPayload:

{
"Bucket": "bucket-test-01",
"ObjectFilePath": "image01.png",
"HasBytes" : true
}

Si la descarga se realiza correctamente, el resultado del campo connectorOutputPayload será similar al siguiente:

{
"Success": "true",
"ContentBytes": "SGVsbG8gdGVzdCE\u003d"
}

De forma predeterminada, el campo HasBytes tiene el valor false.

Si el archivo contiene caracteres especiales, como ä, Ø o Thành, haz lo siguiente:

  1. Codificar en UTF-8: codifica el archivo en UTF-8 para gestionar los caracteres especiales.
  2. Convertir a Base64: convierte el archivo a Base64 para asegurarte de que el texto original no se modifique.
  3. Decodifica la cadena Base64: decodifica el archivo en una cadena Base64 para recuperar el valor original con los caracteres especiales.
Subir un objeto binario a un segmento
  1. En el cuadro de diálogo Configure connector task, haz clic en Actions.
  2. Seleccione la acción UploadObject y, a continuación, haga clic en Hecho.
  3. En la sección Entrada de tarea de la tarea Conectores, haga clic en connectorInputPayload y, a continuación, introduzca lo siguiente en el campo Default Value:
    {
    "ContentBytes": "SGVsbG8gVGVzdCE=",
    "Bucket": "bucket-test-01",
    "ObjectName" : "test-file-01",
    "HasBytes": true
    }
  4. En este ejemplo se crea el archivo test-file-01 en el segmento bucket-test-01. Si ya existe un archivo con el nombre test-file-01, se sobrescribe.

Subir un objeto a un segmento
  1. En el cuadro de diálogo Configure connector task, haz clic en Actions.
  2. Seleccione la acción UploadObject y, a continuación, haga clic en Hecho.
  3. En la sección Entrada de tarea de la tarea Conectores, haga clic en connectorInputPayload y, a continuación, introduzca lo siguiente en el campo Default Value:
    {
    "Content": "Hello test!",
    "Bucket": "bucket-test-01",
    "ObjectName" : "test-file-01.txt"
    }
  4. En este ejemplo, se crea el archivo test-file-01.txt con el contenido Hello test! en el contenedor bucket-test-01. Si ya existe un archivo con el nombre test-file-01.txt, se sobrescribe.

Subir un objeto a una carpeta
  1. En el cuadro de diálogo Configure connector task, haz clic en Actions.
  2. Seleccione la acción UploadObject y, a continuación, haga clic en Hecho.
  3. En la sección Entrada de tarea de la tarea Conectores, haga clic en connectorInputPayload y, a continuación, introduzca lo siguiente en el campo Default Value:
    {
    "Content": "Hello test!",
    "Bucket": "bucket-test-01",
    "FolderPath": "folderA",
    "ObjectName": "test-file-01.txt"
    }
  4. En este ejemplo, se crea el archivo test-file-01.txt con el contenido Hello test! en la carpeta folderA de bucket-test-01. Si la carpeta tiene un archivo con el nombre test-file-01.txt, se sobrescribirá.

Copiar un objeto
  1. En el cuadro de diálogo Configure connector task, haz clic en Actions.
  2. Seleccione la acción CopyObject y, a continuación, haga clic en Hecho.
  3. En la sección Entrada de tarea de la tarea Conectores, haga clic en connectorInputPayload y, a continuación, introduzca lo siguiente en el campo Default Value:
    {
    "BucketSource": "bucket_01",
    "ObjectSource": "folderA/logfile.txt",
    "BucketDestination": "bucket_02",
    "ObjectDestination": "folderB/logfile.txt"
    }
  4. En este ejemplo, se copia el archivo folderA/logfile.txt de bucket_01 a folderB/logfile.txt en bucket_02.

Si la copia se realiza correctamente, el resultado del campo connectorOutputPayload será similar al siguiente:

{
"Success": "true"
}
Desplazamiento de un objeto
  1. En el cuadro de diálogo Configure connector task, haz clic en Actions.
  2. Seleccione la acción MoveObject y, a continuación, haga clic en Hecho.
  3. En la sección Entrada de tarea de la tarea Conectores, haga clic en connectorInputPayload y, a continuación, introduzca lo siguiente en el campo Default Value:
    {
    "BucketSource": "bucket_01",
    "ObjectSource": "folderA/logfile.txt",
    "BucketDestination": "bucket_02",
    "ObjectDestination": "folderB/logfile.txt"
    }
  4. En este ejemplo, se mueve el archivo folderA/logfile.txt de bucket_01 a folderB/logfile.txt en bucket_02.

Si la copia se realiza correctamente, el resultado del campo connectorOutputPayload será similar al siguiente:

{
"Success": "true"
}
Eliminar un objeto
  1. En el cuadro de diálogo Configure connector task, haz clic en Actions.
  2. Seleccione la acción DeleteObject y, a continuación, haga clic en Hecho.
  3. En la sección Entrada de tarea de la tarea Conectores, haga clic en connectorInputPayload y, a continuación, introduzca lo siguiente en el campo Default Value:
    {
    "BucketSource": "bucket_01",
    "ObjectSource": "logfile.txt"
    }
  4. En este ejemplo, se elimina el archivo logfile.txt de bucket_01.

Si la copia se realiza correctamente, el resultado del campo connectorOutputPayload será similar al siguiente:

{
"Success": "true"
}
Crear una URL firmada para un objeto
  1. En el cuadro de diálogo Configure connector task, haz clic en Actions.
  2. Seleccione la acción SignURL y, a continuación, haga clic en Hecho.
  3. En la sección Entrada de tarea de la tarea Conectores, haga clic en connectorInputPayload y, a continuación, introduzca lo siguiente en el campo Default Value:
    {
    "Bucket": "bucket-test-01",
    "ObjectName" : "test-file-01.txt"
    }
  4. En este ejemplo se crea una URL firmada para el archivo test-file-01.txt que se encuentra en el cubo bucket-test-01. Si la acción se realiza correctamente, obtendrá la URL firmada en la respuesta, que será similar a la siguiente:

    {
    "Success": "true",
    "SignURL": "https://storage.googleapis.com/example-bucket/cat.jpeg?X-Goog-Algorithm=
    GOOG4-RSA-SHA256&X-Goog-Credential=example%40example-project.iam.gserviceaccount.com
    %2F20181026%2Fus-central1%2Fstorage%2Fgoog4_request&X-Goog-Date=20181026T18
    1309Z&X-Goog-Expires=900&X-Goog-SignedHeaders=host&X-Goog-Signature=247a2aa45f16
    9edf4d187d54e7cc46e4731b1e6273242c4f4c39a1d2507a0e58706e25e3a85a7dbb891d62afa849
    6def8e260c1db863d9ace85ff0a184b894b117fe46d1225c82f2aa19efd52cf21d3e2022b3b868dc
    c1aca2741951ed5bf3bb25a34f5e9316a2841e8ff4c530b22ceaa1c5ce09c7cbb5732631510c2058
    0e61723f5594de3aea497f195456a2ff2bdd0d13bad47289d8611b6f9cfeef0c46c91a455b94e90a
    66924f722292d21e24d31dcfb38ce0c0f353ffa5a9756fc2a9f2b40bc2113206a81e324fc4fd6823
    a29163fa845c8ae7eca1fcf6e5bb48b3200983c56c5ca81fffb151cca7402beddfc4a76b13344703
    2ea7abedc098d2eb14a7"
    }

Cuestiones importantes

  • El tamaño máximo de un objeto descargable es de 10 MB.
  • No puedes subir varios archivos con la acción UploadObject. Solo puedes subir un archivo.

Crear conexiones con Terraform

Puedes usar el recurso de Terraform para crear una conexión.

Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.

Para ver una plantilla de Terraform de ejemplo para crear una conexión, consulta la plantilla de ejemplo.

Cuando crees esta conexión con Terraform, debes definir las siguientes variables en el archivo de configuración de Terraform:

Nombre del parámetro Tipo de datos Obligatorio Descripción
project_id STRING Verdadero Es el ID del proyecto de Google Cloud en el que se encuentran los datos.

Usar la conexión de Cloud Storage en una integración

Una vez que hayas creado la conexión, estará disponible tanto en Apigee Integration como en Application Integration. Puedes usar la conexión en una integración a través de la tarea Conectores.

  • Para saber cómo crear y usar la tarea Conectores en la integración de Apigee, consulta Tarea Conectores.
  • Para saber cómo crear y usar la tarea Conectores en Application Integration, consulta Tarea Conectores.

Obtener ayuda de la comunidad de Google Cloud

Puedes publicar tus preguntas y hablar sobre este conector en la comunidad de Google Cloud, en los foros de Cloud.

Siguientes pasos