Estás consultando la documentación de Apigee Edge.
Consulta la
documentación de Apigee X. Información
Versión: 1.4.1
Enumerar, descargar y generar URLs firmadas para archivos en un bucket de Cloud Storage
En este contenido, se proporciona referencia para configurar y usar la extensión. Antes de usar esta extensión desde un proxy de API, debes hacer lo siguiente:
Sube objetos a tu bucket.
Otorga permiso para acceder al bucket a la cuenta de servicio de GCP que representa tu extensión de Google Cloud Storage. Para obtener más información sobre el rol que debes usar, consulta Funciones de Cloud Storage. Para obtener más información sobre los permisos en Cloud Storage, consulta Usa permisos de Identity and Access Management (IAM).
Usa GCP Console a fin de generar una clave para la cuenta de servicio.
Usa el contenido del archivo JSON de claves resultante cuando agregues y configures la extensión mediante 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 en la documentación de Cloud Storage es un buen punto de partida.
Ejemplos
En los siguientes ejemplos, se muestra cómo configurar la compatibilidad con las acciones de extensión de Cloud Storage mediante la política ExtensionExtension.
Enumerar archivos
En el siguiente ejemplo, la acción listFiles
de la extensión recupera una lista de los archivos y los muestra en un array. La acción listFiles
no usa 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 respuesta será similar al siguiente:
["example-text.txt","example-image.png"]
La siguiente política para asignar mensajes recupera el valor de respuesta de la política ExtensionExtension anterior y lo copia en la carga útil de 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 ExtensionExtension usa la extensión de Google Cloud Storage para descargar un archivo de texto simple cuyo contenido sea simplemente 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 respuesta se ve de la siguiente manera:
{"content":"Some example text."}
La siguiente política para asignar mensajes recupera el valor que muestra 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 ExtensionExtension usa esta extensión a fin de generar una URL para descargar el archivo especificado desde el bucket de Cloud Storage. Pasa el nombre del archivo junto con la fecha después de la cual la URL debería caducar 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 que se muestra de la extensión es similar al siguiente:
{"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 para asignar mensajes recupera el valor que muestra 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 | Predeterminada | Obligatorias |
---|---|---|---|---|
fileName | El archivo que se descargará. | Cadena | Ningún contenido de este tipo | Sí. |
Sintaxis
<Input><![CDATA[{"fileName" : "the-file-to-download"}]]></Input>
Ejemplo
<Input><![CDATA[{"fileName" : "example-text.txt"}]]></Input>
Respuesta
JSON que representa un objeto con el contenido del archivo descargado Por ejemplo:
{"content":"Some example text."}
listFiles
Se muestran los archivos disponibles para descargar.
parámetros de solicitud
Ningún contenido de este tipo
Respuesta
Es un array de nombres de archivos. Por ejemplo:
["example-text.txt","example-image.png"]
generateSignedURL
Crea una URL firmada para un archivo especificado en el bucket. Se puede usar esta URL para descargar el archivo.
parámetros de solicitud
Parámetro | Descripción | Tipo | Predeterminada | Obligatorias |
---|---|---|---|---|
fileName | Nombre del objeto de Cloud Storage para el que se genera una URL firmada. | Cadena | Ningún contenido de este tipo | Sí. |
expiresOn | Fecha en la que debe caducar la URL firmada. | Cadena | Ningún contenido de este tipo | No. |
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
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 quieres conocer los pasos para configurar una extensión con la consola de Apigee, consulta Agrega y configura 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 | Sí |
packageName |
Nombre del paquete de extensiones proporcionado por Apigee Edge. | Ninguna | Sí |
version |
El número de versión del paquete de extensiones desde el que quieres configurar la extensión. | Ninguna | Sí |
configuration |
Es un valor de configuración específico para la extensión que agregas. Consulta Propiedades para este paquete de extensiones | Ninguna | Sí |
Propiedades de este paquete de extensión
Propiedad | Descripción | Predeterminada | Obligatorias |
---|---|---|---|
bucketName | El bucket de GCS con el que debería interactuar esta extensión. | Ningún contenido de este tipo | Sí. |