Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
¿Cómo puedo cargar una imagen o un archivo PDF a Amazon S3 a través de API Gateway?
Quiero usar Amazon API Gateway para cargar una imagen o un archivo PDF a Amazon Simple Storage Service (Amazon S3) y, a continuación, recuperarlo.
Descripción corta
Para usar API Gateway para cargar una imagen o un PDF como archivo binario a un bucket de Amazon S3, activa la compatibilidad con archivos binarios.
Para conceder a API Gateway acceso a tu bucket de S3, crea un rol de AWS Identity and Access Management (IAM). El rol de IAM debe incluir permisos para que API Gateway realice las acciones PutObject y GetObject en tu bucket de S3.
Resolución
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.
Creación de un rol de IAM para API Gateway
Sigue estos pasos:
- Abra la consola de IAM.
- En el panel de navegación, selecciona Roles.
- Selecciona Crear rol.
- En Trusted entity type (Tipo de entidad de confianza), elige AWS service (Servicio de AWS).
- En Service or use case (Servicio o caso de uso), elige API Gateway.
- En Use case (Caso práctico), elige API Gateway.
- Selecciona Siguiente. A continuación, vuelve a elegir Siguiente.
- En Nombre de rol, introduce un nombre para tu política. Por ejemplo: api-gateway-upload-to-s3.
- (Opcional) Para añadir etiquetas al rol de IAM, elige Agregar nueva etiqueta.
- Selecciona Crear rol.
Creación y asociación de una política de IAM al rol de API Gateway
Sigue estos pasos:
- Abre la consola de IAM.
- En el panel de navegación, selecciona Roles.
- En el cuadro de búsqueda, introduce el nombre del rol de IAM para API Gateway y, a continuación, selecciona el rol en la columna Nombre del rol.
- En la pestaña Políticas de permisos, elige Agregar permisos y, a continuación, Create inline policy (Crear política insertada).
- En la pestaña Editor visual, en la sección Seleccionar un servicio,elige Elegir un servicio.
- Introduce S3 y, a continuación, elige S3.
- En Actions allowed (Acciones permitidas), escribe PutObject y, a continuación, elige PutObject. Escribe GetObject y, a continuación, elige GetObject.
- Amplía Recursos y, a continuación, selecciona Específico.
- Elige Agregar ARN.
- En Resource bucket name (Nombre del bucket de recursos), introduce el nombre del bucket. Incluye el prefijo, si corresponde.
- En Resource object name (Nombre del objeto de recursos), introduce un nombre de objeto.
Nota: El nombre del bucket especifica la ubicación de los archivos cargados. El nombre del objeto especifica el patrón que debe seguir el objeto para alinear las políticas. Para obtener más información, consulta las reglas de nomenclatura de buckets de uso general y la descripción general de los objetos de Amazon S3. - Elige Agregar ARN.
- Selecciona Siguiente.
- En Nombre, introduce el nombre de tu política.
- Selecciona Crear política.
Creación de una API de REST en API Gateway
Para crear una API que entregue tus solicitudes, sigue estos pasos:
- Abre la consola de API Gateway.
- En el panel de navegación, selecciona API.
- Selecciona Crear API.
- En la sección Elige un tipo de API, en API de REST, elige Crear.
- En Nombre de API, introduce un nombre para tu API y, a continuación, selecciona Crear API.
Para crear recursos para tu API, sigue estos pasos:
- En el panel Recursos de la página de la API, selecciona /.
- Elige Crear recurso.
- En Ruta de recurso, elige /.
- En Nombre del recurso, introduce {bucket}.
Nota: Bucket es un nombre de variable que el usuario puede cambiar. - Elige Crear recurso.
- En el panel Recursos, selecciona el recurso /{bucket}.
- Elige Crear recurso.
- En Ruta de recurso, elige /{bucket}/.
- En Nombre del recurso, introduce {proxy+}.
- Elige Crear recurso.
Para crear un método PUT para que tu API cargue imágenes o archivos PDF, sigue estos pasos:
- En la sección Métodos, elige Crear método.
- En Method type (Tipo de método), elige PUT.
- En Tipo de integración, elige Servicio de AWS.
- En Región de AWS, elige us-east-1 o la región de AWS que aparece en la página Propiedades del bucket.
- En Servicio de AWS, elige Simple Storage Service (S3).
- Mantén vacío el subdominio de AWS.
- En Método HTTP, elige PUT.
- En Tipo de acción, elige Usar sustitución de ruta.
- En Sustitución de ruta, introduce {bucket}/{proxy}.
- En Rol de ejecución, introduce el nombre de recurso de Amazon (ARN) del rol de IAM.
- En Tratamiento de contenido, elige Paso a través.
- Selecciona Crear método.
Configuración de las asignaciones de parámetros para el método PUT
Sigue estos pasos:
- En el panel Recursos de la página de la API, selecciona PUT.
- Selecciona Solicitud de integración y, a continuación, selecciona Editar.
- Amplía Parámetros de ruta URL.
- Elige Agregar parámetro de ruta.
- En Nombre, introduce bucket.
- En Asignado desde, escribe method.request.path.bucket.
- Repite los pasos 4 a 6, pero para el paso 5, define Nombre en clave. En el paso 6, define Asignado desde en method.request.path.proxy.
- Selecciona Guardar.
Creación de un método GET para que la API recupere una imagen
Sigue estos pasos:
- En el panel Recursos de la página de la API, selecciona /{object}.
- En la sección Métodos, elige Crear método.
- En Tipo de método, selecciona GET.
- En Tipo de integración, elige Servicio de AWS.
- En Región de AWS, elige us-east-1 o la región que aparece en la página de propiedades del bucket.
- En Servicio de AWS, elige Simple Storage Service (S3).
- Mantén vacío el subdominio de AWS.
- En Método HTTP, elige GET.
- En Tipo de acción, elige Usar sustitución de ruta.
- En Sustitución de ruta, introduce {bucket}/{key}.
- En Rol de ejecución, introduce el ARN del rol de IAM.
- Para la Gestión de contenido, elige Transferencia.
- Selecciona Crear método.
Configuración de las asignaciones de parámetros para el método GET
Sigue estos pasos:
- En el panel Recursos de la página de la API, selecciona GET.
- Selecciona Solicitud de integración y, a continuación, selecciona Editar.
- Amplía Parámetros de ruta URL.
- Selecciona Agregar parámetros de ruta.
- En Nombre, introduce bucket.
- En Asignado desde, escribe method.request.path.folder.
- Repite los pasos 4 a 6, pero para el paso 5, define Nombre en clave. En el paso 6, define Asignado desde en method.request.path.object.
- Selecciona Guardar.
Configuración de la asignación de respuestas para ver la imagen o el PDF en un navegador
Sigue estos pasos:
- En el panel Recursos de la página de la API, selecciona GET.
- Selecciona Método de respuesta.
- En **Respuesta 200, ** elige Editar.
- En Cuerpo de respuesta, elimina application/json.
- En Nombre del encabezado, selecciona Agregar encabezado.
- En Nombre, introduce content-type.
- Selecciona Guardar.
- Selecciona Respuesta de integración y, a continuación, elige Editar.
- En Código de estado de respuesta del método 200, introduce image/jpeg para un archivo de imagen o application/pdf para un archivo PDF.
- Selecciona Guardar.
Configuración de tipos de medios binarios para la API
Sigue estos pasos:
- En el panel de navegación de la página de la API, selecciona Configuración de API.
- En la sección Tipos de medios binarios, elige Administrar tipos de medios.
- Elige Agregar tipo de medio binario y, a continuación, agrega la cadena / en el cuadro de texto.
Nota: No pongas la cadena entre comillas. Puedes sustituir un comodín por un tipo específico de extensiones de correo de Internet multipropósito (MIME) para administrarlo como un tipo de medio binario. Por ejemplo, para que API Gateway administre las imágenes JPEG como tipos de medios binarios, elige image/jpeg. Si agregas */*, API Gateway administra todos los tipos de medios como tipos de medios binarios. - Selecciona Guardar cambios.
Resolución del error CORS con la configuración binaria de la API
Nota: Si usas las API PUT y GET en una aplicación web, es posible que recibas un error de intercambio de recursos entre orígenes (CORS). Para obtener más información, consulta los errores de CORS en el sitio web de Mozilla.
Para resolver el error de CORS con la configuración binaria activada, sigue estos pasos:
- Abre la consola de API Gateway.
- Selecciona tu API.
- En el panel Recursos de la página de la API, selecciona /{object}.
- Elige Habilitar CORS.
- En Respuestas de gateway, elige 4xx predeterminado, 5xx predeterminado.
- En Access-Control-Allow-Methods, elige GET y PUT.
- Selecciona Guardar.
- Ejecuta el comando update-integration de la AWS CLI:
Nota: Sustituye rest-api-id por tu ID de API de REST, RESOURCE_id por tu ID de recurso y AWS_REGION por tu región.aws apigateway update-integration --rest-api-id API_ID --resource-id RESOURCE_id --http-method OPTIONS --patch-operations op='replace',path='/contentHandling',value='CONVERT_TO_TEXT' --region AWS_REGION - Ejecuta el comando update-integration-response:
Nota: Sustituye rest-api-id por tu ID de API de REST, RESOURCE_id por tu ID de recurso y AWS_REGION por tu región. Para que API Gateway ejecute solicitudes de opciones, debes ejecutar los comandos update-integration y update-integration-response uno tras otro.aws apigateway update-integration-response --rest-api-id API_ID --resource-id RESOURCE_id --http-method OPTIONS --status-code 200 --patch-operations op='replace',path='/contentHandling',value='CONVERT_TO_TEXT' --region AWS_REGION
Implementación de la API
Sigue estos pasos:
- En el panel de navegación de la página de la API, selecciona Recursos.
- Elige Desplegar API.
- En la ventana Desplegar API, para Etapa, elige *New Stage* (Nueva etapa).
- Para Nombre de etapa, escribe v1.
- Seleccione Desplegar.
- En el panel de navegación, selecciona Etapas.
- Elige la etapa v1.
- Anota la URL de invocación que aparece.
Para obtener más información, consulta Despliegue de las API de REST en API Gateway.
Invocación de la API de REST para cargar un archivo de imagen en Amazon S3
Sigue estos pasos:
- Agrega el nombre del bucket y el nombre del archivo del objeto a la URL de invocación de la API.
- Usa tu cliente preferido para hacer una solicitud HTTP PUT. Por ejemplo, puedes descargar y usar Postman. Para obtener más información, consulta Download Postman (Descargar Postman) en el sitio web de Postman.
- Elige Cuerpo y, a continuación, elige binario. Cuando aparezca el botón Seleccionar archivo, selecciona un archivo local para cargarlo.
El siguiente es un ejemplo de comando curl que puedes ejecutar para hacer una solicitud PUT HTTP para cargar una imagen o un PDF:
curl -i --location --request PUT 'https://abc12345.execute-api.us-west-2.amazonaws.com/v1/testfolder/testimage.jpeg' --header 'Content-Type: text/plain' --data-binary '@/Path/to/file/image.jpeg'
Nota: Sustituye abc12345 por el ID de la API, testfolder por el bucket de S3 y testimage.jpeg por el archivo local que cargues.
Si has incluido */* en la lista de tipos de medios binarios, puedes realizar una solicitud PUT para cargar el archivo. Si has incluido image.jpeg en la lista de tipos de medios binarios, añade el encabezado Content-Type a la solicitud PUT y configúralo en image/jpeg. Como el navegador web realiza una solicitud GET, puedes ver la imagen o el PDF en un navegador web con la misma URL.
Información relacionada
Habilitar la compatibilidad con datos binarios mediante la API de REST de API Gateway
Habilitar CORS en un recurso mediante la consola de API Gateway
- Etiquetas
- Amazon API Gateway
- Idioma
- Español
Vídeos relacionados


Contenido relevante
- preguntada hace 6 meses
- preguntada hace 10 meses
- preguntada hace 21 días
OFICIAL DE AWSActualizada hace un año