Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Consolidación de la generación de URL prefirmadas y las descargas de objetos de Amazon S3 mediante un punto de conexión asociado a direcciones IP estáticas
Song Jin, Eunhye Jo y Jun Soung Lee, Amazon Web Services
Resumen
Este patrón simplifica el acceso a Amazon Simple Storage Service (Amazon S3) al crear descargas de objetos seguras y URLs prefirmadas personalizadas. La solución proporciona un único punto de conexión con un dominio único y direcciones IP estáticas. Está diseñado para los clientes que requieren la consolidación de la API y los puntos de conexión de Amazon S3 en un dominio unificado con direcciones IP estáticas. El caso de uso implica que los usuarios sigan una política de firewall de listas de direcciones IP y dominios permitidos, lo que limita el acceso de la API a dominios y direcciones IP específicos.
La arquitectura emplea claves Servicios de AWS AWS Global Accelerator, como Amazon API Gateway AWS Lambda, Application Load Balancer y Amazon S3. AWS PrivateLink Este diseño centraliza la API para generar el punto final prefirmado URLs y el punto final de Amazon S3 en un único dominio, vinculado a un acelerador con dos direcciones IP estáticas. En consecuencia, los usuarios pueden solicitar URLs y descargar objetos de Amazon S3 prefirmados sin esfuerzo a través de un punto de enlace de dominio unificado con direcciones IP estáticas.
Esta arquitectura es especialmente beneficiosa para los clientes con políticas o requisitos de conformidad estrictos, como los de los sectores público, médico y financiero.
Requisitos previos y limitaciones
Requisitos previos
Un activo Cuenta de AWS
Una zona alojada pública de su dominio personalizado
Un dominio importado en AWS Certificate Manager (ACM) Región de AWS de su elección
Limitaciones
El nombre del bucket de Amazon S3 debe coincidir con el nombre de dominio del punto de conexión. Este requisito es para garantizar que el punto de conexión de Amazon S3 se pueda atender a través del punto de conexión de API único.
El nombre de dominio personalizado utilizado en API Gateway debe coincidir con el nombre de dominio del único punto de conexión de la API.
Algunos Servicios de AWS no están disponibles en todos Regiones de AWS. Para obtener información sobre la disponibilidad en regiones, consulte AWS Services by Region
. Para ver los puntos de conexión específicos, consulte Service endpoints and quotas y elija el enlace del servicio.
Arquitectura
En el siguiente diagrama se muestran los componentes de la arquitectura de destino y el flujo de trabajo de este patrón.

El diagrama ilustra el siguiente concepto y flujo de trabajo:
Un usuario inicia una solicitud para generar una URL prefirmada mediante el punto de enlace personalizado a través del cual se sirve AWS Global Accelerator, utilizando el nombre de dominio personalizado y las direcciones IP asociadas.
Una función de Lambda genera la URL prefirmada y apunta al punto de conexión personalizado. Responde con una redirección 301 que contiene la URL prefirmada generada. A través de la URL prefirmada redirigida, el usuario descarga el objeto automáticamente mediante el punto de conexión personalizado ofrecido a través de Global Accelerator.
Los componentes de la arquitectura general para la generación de URL prefirmadas y el flujo de trabajo de descarga de objetos son los siguientes:
Aprovisionamiento de direcciones IP estáticas por parte de Global Accelerator.
Registro del alias del acelerador como registro A en la zona alojada pública de Amazon Route 53 con el nombre de dominio personalizado.
Creación de un bucket de Amazon S3 con un nombre de bucket que coincida con el nombre de dominio personalizado registrado.
Creación de puntos de enlace de VPC para API Gateway y el servicio Amazon S3.
Configuración de un equilibrador de carga de aplicación interno para conectarse a Global Accelerator.
Asignación de un nombre de dominio personalizado para API Gateway con un certificado ACM adjunto.
Implementación de una API Gateway privada integrada con una función de Lambda.
La función Lambda está equipada con un rol AWS Identity and Access Management (IAM) adjunto (con GetObjectpermisos).
Tools (Herramientas)
Servicios de AWS
Amazon API Gateway le ayuda a crear, publicar, mantener, supervisar y proteger REST, HTTP y WebSocket APIs a cualquier escala.
Los balanceadores de carga de aplicaciones distribuyen el tráfico de aplicaciones entrante entre varios destinos, como las instancias de Amazon Elastic Compute Cloud (Amazon EC2), en varias zonas de disponibilidad.
AWS Certificate Manager (ACM) le ayuda a crear, almacenar y renovar claves y certificados SSL/TLS X.509 públicos y privados que protegen sus AWS sitios web y aplicaciones.
AWS Cloud Development Kit (AWS CDK)es un marco de desarrollo de software que le ayuda a definir y aprovisionar la Nube de AWS infraestructura en código.
AWS Global Accelerator es un servicio global que admite puntos de conexión en varias Regiones de AWS. Puede crear aceleradores que dirijan el tráfico a puntos finales óptimos a través de la red AWS global. De este modo, se mejora la disponibilidad y el rendimiento de las aplicaciones de Internet destinadas al público general.
AWS Identity and Access Management (IAM) le ayuda a administrar de forma segura el acceso a sus AWS recursos al controlar quién está autenticado y autorizado a usarlos.
AWS Lambda es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice.
AWS PrivateLinkle ayuda a crear conexiones unidireccionales y privadas desde sus nubes privadas virtuales (VPCs) a servicios externos a la VPC.
Amazon Route 53 es un servicio web de sistema de nombres de dominio (DNS) escalable y de alta disponibilidad.
Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos basado en la nube que lo ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.
Otras herramientas
Terraform
es una herramienta de infraestructura como código (IaC) HashiCorp que le ayuda a crear y administrar recursos locales y en la nube.
Repositorio de código
Puede implementar este patrón utilizando Terraform AWS CDK o Terraform según sus preferencias. La sección Epics contiene instrucciones para ambos métodos de implementación. El código de este patrón está disponible en los siguientes GitHub repositorios:
AWS CDK— s3- presignedurl-staticips-endpoint-with
-cdk Terraforma — s3 - -terraforma presignedurl-staticips-endpoint-with
Prácticas recomendadas
Para mejorar la seguridad en el entorno de producción, es crucial implementar mecanismos de autorización, como Amazon Cognito, para restringir el acceso a la API de generación
PresignedUrl.Siga el principio de privilegio mínimo y conceda los permisos mínimos necesarios para llevar a cabo una tarea. Para obtener más información, consulte Otorgar privilegio mínimo y Prácticas recomendadas de seguridad en la documentación de IAM.
Epics
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Decida un nombre de dominio. | Elija un nombre de dominio público para el punto de conexión unificado de Amazon S3. El nombre del dominio también se usa como el nombre del bucket de Amazon S3. | Administrador de AWS, administrador de red |
Creación de una zona alojada pública. | Cree una zona alojada pública en Amazon Route 53. Su nombre de dominio debe coincidir con el nombre de dominio que se usa en API Gateway. | Administrador de AWS, administrador de red |
Prepare un certificado SSL. | Utilice AWS Certificate Manager (ACM) para solicitar o importar un certificado SSL para el dominio de su aplicación web. | Administrador de AWS, administrador de red |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Configure el entorno de desarrollo de Terraform. | Para configurar el entorno de desarrollo, haga lo siguiente:
| Administrador de la nube, administrador de AWS |
Modifique los archivos |
Tenga en cuenta lo siguiente:
| Administrador de la nube, administrador de AWS |
Aprovisione los recursos de red. | Para aprovisionar los recursos de red, ejecute los siguientes comandos:
Durante la ejecución del comando | Administrador de la nube, administrador de AWS |
Aprovisione API Gateway, Amazon S3 y Lambda. | Para aprovisionar los recursos de red, use los siguientes comandos:
| Administrador de la nube, administrador de AWS |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Configure el entorno AWS CDK de desarrollo. | Para configurar el entorno de desarrollo, haga lo siguiente:
| Administrador de la nube, administrador de AWS |
Configure los ajustes del dominio en el archivo | Para editar las opciones de la variable constante, utilice los siguientes comandos:
En los comandos, reemplace cada marcador de posición con su propia información:
| Administrador de la nube, administrador de AWS |
Implemente las pilas. | Para implementar dos pilas, una para la nube privada virtual (VPC) y otra para la aplicación, utilice el siguiente comando:
| Administrador de la nube, administrador de AWS |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Verifique las direcciones IP del punto de conexión. | Para comprobar que el dominio de este patrón tenga direcciones IP estáticas, utilice el siguiente comando:
| Administrador de red |
Cargue un archivo de prueba que pueda descargar más adelante. | Cargue el archivo de prueba en la carpeta | Administrador de la nube, administrador de AWS |
Invoque la API para generar una URL prefirmada. | Para generar una URL prefirmada, llame a la URL desde un navegador o un cliente de API (por ejemplo, Postman
Sustituya los valores de los marcadores de posición | Propietario de la aplicación |
Compruebe el resultado. | El resultado esperado es que reciba un código de estado de redireccionamiento 301 (desplazado permanentemente). Esta respuesta contendrá la URL prefirmada, que debería iniciar automáticamente la descarga del archivo de prueba. | Ingeniero de pruebas |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Destruya los recursos de API Gateway, Amazon S3 y Lambda. | Para eliminar los recursos, use los siguientes comandos:
| Administrador de la nube, administrador de AWS |
Destruya los recursos de red. | Para eliminar los recursos de red, use los siguientes comandos:
| Administrador de la nube, administrador de AWS |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Destruya las pilas. | Para destruir las pilas de VPC y de aplicaciones, utilice el siguiente comando:
| Administrador de la nube, administrador de AWS |
Vacíe y elimine los buckets de Amazon S3. | Vacíe y elimine el bucket de Amazon S3 del objeto y el bucket de Amazon S3 de los registros que no se eliminen de forma predeterminada. Los nombres de los buckets de Amazon S3 son Si prefiere usar AWS Command Line Interface (AWS CLI) para eliminar los buckets, utilice los siguientes comandos:
Sustituya | Administrador de la nube, administrador de AWS |
Recursos relacionados
AWS Blogs