Extensión de Google Cloud Storage

Estás viendo la documentación de Apigee Edge.
Ir a la documentación de Apigee X.
info

Versión: 2.0.2

Enumera, descarga y genera URLs firmadas para los archivos en un bucket de Cloud Storage.

En este contenido, se proporciona información de referencia para configurar y usar esta extensión. Antes de usar esta extensión desde un proxy de API, debes hacer lo siguiente:

  1. Crea buckets de Cloud Storage.

  2. Sube objetos a tu bucket.

  3. Otorga permiso para acceder al bucket a la cuenta de servicio de Google Cloud que representa tu extensión de Google Cloud Storage. Para obtener más información sobre el rol que se debe usar, consulta Roles de Cloud Storage. Si deseas obtener más información sobre los permisos en Cloud Storage, consulta Uso de permisos de Identity and Access Management (IAM).

  4. Usa la consola de Google Cloud para generar una clave para la cuenta de servicio.

  5. Usa el contenido del archivo JSON de la clave resultante cuando agregues y configures la extensión con la referencia de configuración.

Acerca de Cloud Storage

Cloud Storage es un servicio de almacenamiento de archivos seguro, duradero y escalable. Si recién comienzas a usar Cloud Storage, la guía de inicio rápido de la documentación de Cloud Storage es un buen lugar para comenzar.

Ejemplos

En los siguientes ejemplos, se ilustra cómo configurar la compatibilidad con las acciones de extensión de Cloud Storage con la política ExtensionCallout.

Enumerar archivos

En el siguiente ejemplo, la acción listFiles de la extensión recupera una lista de los archivos y los devuelve en un array. La acción listFiles no toma parámetros de entrada.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="false" enabled="true" name="Get-Storage-File-List">
    <DisplayName>Get Storage File List</DisplayName>
    <Connector>cloud-storage-extension-example</Connector>
    <Action>listFiles</Action>
    <Input><![CDATA[{}]]></Input>
    <Output parsed="false">storage.filelist.retrieved</Output>
</ConnectorCallout>

El valor de la respuesta se ve de la siguiente manera:

["example-text.txt","example-image.png"]

La siguiente política de Assign Message recupera el valor de respuesta de la política de ExtensionCallout y lo copia en la carga útil de la respuesta.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Storage-File-List">
    <DisplayName>Assign Storage File List</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{storage.filelist.retrieved}</Payload>
    </Set>
</AssignMessage>

Cómo descargar un archivo

La siguiente política de ExtensionCallout usa la extensión de Google Cloud Storage para descargar un archivo de texto cuyo contenido es Some example text..

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="false" enabled="true" name="Download-File">
    <DisplayName>Download File</DisplayName>
    <Connector>cloud-storage-extension-example</Connector>
    <Action>downloadFile</Action>
    <Input><![CDATA[{"fileName": "example-text.txt"}]]></Input>
    <Output>storage.file.retrieved</Output>
</ConnectorCallout>

El valor de la respuesta se ve de la siguiente manera:

{"content":"Some example text."}

La siguiente política de Assign Message recupera el valor que devuelve la extensión y lo copia en la carga útil de la respuesta.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Storage-File-List">
    <DisplayName>Assign Storage File List</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{storage.file.retrieved}</Payload>
    </Set>
</AssignMessage>

Genera una URL firmada

La siguiente política de ExtensionCallout usa esta extensión para generar una URL para descargar el archivo especificado del bucket de Cloud Storage. Pasa el nombre del archivo, junto con la fecha después de la cual la URL debería vencer y dejar de funcionar.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="false" enabled="true" name="Get-Signed-URL">
    <DisplayName>Get Signed URL</DisplayName>
    <Connector>cloud-storage-extension-example</Connector>
    <Action>generateSignedURL</Action>
    <Input><![CDATA[{
        "fileName" : "example-text.txt",
        "expiresOn" : "2018-08-05"
    }]]></Input>
    <Output>storage.url.retrieved</Output>
</ConnectorCallout>

El valor de devolución de la extensión se ve de la siguiente manera:

{"url":"https://storage.googleapis.com/storage-extension-example/example-text.txt?GoogleAccessId=extension-test%40my-test-33333.iam.gserviceaccount.com&Expires=1533427200&Signature=Y1cE1DCHesWeIZILRhdIuDR%2FhzZXZ%2BPeY3J1PUkRiosFYj41itHBWh2%2BTQgH9kI6E8s2mWrVDFU43YR7s8Tm9W5VgWRwh0nXSactQ0xKbkKbGZmCcWxgIscOezc1zc%2Bp7lnXSx1qd4wIlIKVH4KCd9WLx4qB1dLxGNxMKB32tA3dio5IiMXaHEA%2FR2fYc0Pjh45t8L5rilk5pekv7jfd3sfsgdfgfdglkj%2F7E%2FlJ%2B60RnetqV2IDqrc0sVEgSLTpgTbDGU%2Ft3EcitRUFOSdOb5czt7CiIwKAYSmDEFMSNHHiNTWjvLzq4IU%2BCa4Z5aKyvww%3D%3D"}

La siguiente política de Assign Message recupera el valor que devuelve la extensión y lo copia en el cuerpo de la respuesta.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Storage-File-URL">
    <DisplayName>Assign Storage File URL</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{storage.url.retrieved}</Payload>
    </Set>
</AssignMessage>

Acciones

downloadFile

Descarga el archivo especificado.

Parámetros de solicitud

Parámetro Descripción Tipo Predeterminado Obligatorio
fileName Archivo que se descargará. String Ninguno Sí.

Sintaxis

<Input><![CDATA[{"fileName" : "the-file-to-download"}]]></Input>

Ejemplo

<Input><![CDATA[{"fileName" : "example-text.txt"}]]></Input>

Respuesta

Es un objeto JSON que representa un objeto con el contenido del archivo descargado. Por ejemplo:

{"content":"Some example text."}

listFiles

Enumera los archivos disponibles para descargar.

Parámetros de solicitud

Ninguno

Respuesta

Es un array de nombres de archivos. Por ejemplo:

["example-text.txt","example-image.png"]

generateSignedURL

Crea una URL firmada para el archivo especificado en el bucket. Se puede usar esta URL para descargar el archivo.

Parámetros de solicitud

Parámetro Descripción Tipo Predeterminado Obligatorio
fileName Nombre del objeto de Cloud Storage para el que se generará una URL firmada. String Ninguno Sí.
expiresOn Fecha en la que debe vencer la URL firmada. String Ninguno Núm.

Sintaxis

<Input><![CDATA[{
  "fileName" : "file-for-which-to-generate-url",
  "expiresOn" : "date-to-expire-url"
}]]></Input>

Ejemplo

<Input><![CDATA[{
  "fileName" : "example-text.txt",
  "expiresOn" : "2018-08-05"
}]]></Input>

Respuesta

Es un objeto JSON que representa un objeto con la URL firmada. Por ejemplo:

{"url":"https://storage.googleapis.com/storage-extension-example/example-text.txt?GoogleAccessId=extension-test%40my-test-33333.iam.gserviceaccount.com&Expires=1533427200&Signature=Y1cE1DCHesWeIZILRhdIuDR%2FhzZXZ%2BPeY3J1PUkRiosFYj41itHBWh2%2BTQgH9kI6E8s2mWrVDFU43YR7s8Tm9W5VgWRwh0nXSactQ0xKbkKbGZmCcWxgIscOezc1zc%2Bp7lnXSx1qd4wIlIKVH4KCd9WLx4qB1dLxGNxMKB32tA3dio5IiMXaHEA%2FR2fYc0Pjh45t8L5rilk5pekv7jfd3sfsgdfgfdglkj%2F7E%2FlJ%2B60RnetqV2IDqrc0sVEgSLTpgTbDGU%2Ft3EcitRUFOSdOb5czt7CiIwKAYSmDEFMSNHHiNTWjvLzq4IU%2BCa4Z5aKyvww%3D%3D"}

Referencia de configuración

Usa la siguiente información cuando configures e implementes esta extensión para usarla en proxies de API. Si deseas conocer los pasos para configurar una extensión con la consola de Apigee, consulta Cómo agregar y configurar una extensión.

Propiedades comunes de las extensiones

Las siguientes propiedades están presentes para cada extensión.

Propiedad Descripción Predeterminado Obligatorio
name Nombre que asignas a esta configuración de la extensión. Ninguna
packageName Nombre del paquete de extensiones proporcionado por Apigee Edge. Ninguna
version El número de versión del paquete de extensiones desde el que quieres configurar la extensión. Ninguna
configuration Es un valor de configuración específico para la extensión que agregas. Consulta Propiedades para este paquete de extensiones Ninguna

Propiedades de este paquete de extensión

Propiedad Descripción Predeterminado Obligatorio
bucketName Es el bucket de GCS con el que debe interactuar esta extensión. Ninguno Sí.