Las siguientes tareas muestran cómo habilitar la compatibilidad con datos binarios mediante llamadas a la API REST de API Gateway.
Temas
Añadir y actualizar tipos de medios binarios compatibles en una API
Para habilitar API Gateway para que admita un nuevo tipo de medios binarios, debe agregar el tipo de medios binarios a la lista binaryMediaTypes
del recurso RestApi
. Por ejemplo, para que API Gateway admita imágenes JPEG, envíe una solicitud PATCH
al recurso RestApi
:
PATCH /restapis/<restapi_id> { "patchOperations" : [ { "op" : "add", "path" : "/binaryMediaTypes/image~1jpeg" } ] }
La especificación del tipo MIME de image/jpeg
que forma parte del valor de la propiedad path
se ha incluido en una secuencia de escape: image~1jpeg
.
Para actualizar los tipos de medios binarios compatibles, sustituya o elimine el tipo de medios en la lista binaryMediaTypes
del recurso RestApi
. Por ejemplo, para cambiar la compatibilidad binaria de archivos JPEG a bytes sin formato, envíe una solicitud PATCH
al recurso RestApi
, tal y como se indica a continuación:
PATCH /restapis/<restapi_id> { "patchOperations" : [{ "op" : "replace", "path" : "/binaryMediaTypes/image~1jpeg", "value" : "application/octet-stream" }, { "op" : "remove", "path" : "/binaryMediaTypes/image~1jpeg" }] }
Configurar las conversiones de carga de solicitud
Si el punto de conexión requiere una entrada binaria, establezca la propiedad contentHandling
del recurso Integration
en CONVERT_TO_BINARY
. Para ello, envíe una solicitud PATCH
de la siguiente manera:
PATCH /restapis/<restapi_id>/resources/<resource_id>/methods/<http_method>/integration { "patchOperations" : [ { "op" : "replace", "path" : "/contentHandling", "value" : "CONVERT_TO_BINARY" }] }
Configurar conversiones de carga de respuesta
Si el cliente acepta el resultado como un blob binario en lugar de una carga codificada en base64 devuelta por el punto de conexión, establezca la propiedad contentHandling
del recurso IntegrationResponse
en CONVERT_TO_BINARY
. Para ello, envíe una solicitud PATCH
, de la siguiente manera:
PATCH /restapis/<restapi_id>/resources/<resource_id>/methods/<http_method>/integration/responses/<status_code> { "patchOperations" : [ { "op" : "replace", "path" : "/contentHandling", "value" : "CONVERT_TO_BINARY" }] }
Convertir datos binarios en datos de texto
Para enviar datos binarios como una propiedad JSON de la entrada a AWS Lambda o Kinesis a través de API Gateway, haga lo siguiente:
-
Habilite la compatibilidad de carga binaria de la API añadiendo el nuevo tipo de medios binarios de
application/octet-stream
a la listabinaryMediaTypes
de la API.PATCH /restapis/<restapi_id> { "patchOperations" : [ { "op" : "add", "path" : "/binaryMediaTypes/application~1octet-stream" } ] }
-
Establezca
CONVERT_TO_TEXT
en la propiedadcontentHandling
del recursoIntegration
y proporcione una plantilla de asignación para asignar la cadena codificada en base64 de los datos binarios a una propiedad JSON. En el siguiente ejemplo, la propiedad JSON esbody
y$input.body
contiene la cadena codificada en base64.PATCH /restapis/<restapi_id>/resources/<resource_id>/methods/<http_method>/integration { "patchOperations" : [ { "op" : "replace", "path" : "/contentHandling", "value" : "CONVERT_TO_TEXT" }, { "op" : "add", "path" : "/requestTemplates/application~1octet-stream", "value" : "{\"body\": \"$input.body\"}" } ] }
Convertir datos de texto en una carga binaria
Supongamos que tiene una función de Lambda que devuelve un archivo de imagen como una cadena codificada en base64. Para pasar esta salida binaria al cliente a través de API Gateway, haga lo siguiente:
-
Actualice la lista
binaryMediaTypes
de la API añadiendo el tipo de medios binarios deapplication/octet-stream
, si aún no está en la lista.PATCH /restapis/<restapi_id> { "patchOperations" : [ { "op" : "add", "path" : "/binaryMediaTypes/application~1octet-stream", }] }
-
Establezca la propiedad
contentHandling
del recursoIntegration
enCONVERT_TO_BINARY
. No defina una plantilla de asignación. Si no define una plantilla de mapeo, API Gateway llama a la plantilla de paso a través para devolver el blob binario descodificado en base64 como el archivo de imagen al cliente.PATCH /restapis/<restapi_id>/resources/<resource_id>/methods/<http_method>/integration/responses/<status_code> { "patchOperations" : [ { "op" : "replace", "path" : "/contentHandling", "value" : "CONVERT_TO_BINARY" } ] }
Transferir una carga binaria
Para almacenar una imagen en un bucket de Amazon S3 utilizando API Gateway, haga lo siguiente:
-
Actualice la lista
binaryMediaTypes
de la API añadiendo el tipo de medios binarios deapplication/octet-stream
, si aún no está en la lista.PATCH /restapis/<restapi_id> { "patchOperations" : [ { "op" : "add", "path" : "/binaryMediaTypes/application~1octet-stream" } ] }
-
En la propiedad
contentHandling
del recursoIntegration
, establezcaCONVERT_TO_BINARY
. EstablezcaWHEN_NO_MATCH
como el valor de la propiedadpassthroughBehavior
sin definir una plantilla de asignación. Esto permite a API Gateway invocar la plantilla de acceso directo.PATCH /restapis/<restapi_id>/resources/<resource_id>/methods/<http_method>/integration { "patchOperations" : [ { "op" : "replace", "path" : "/contentHandling", "value" : "CONVERT_TO_BINARY" }, { "op" : "replace", "path" : "/passthroughBehaviors", "value" : "WHEN_NO_MATCH" } ] }