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.
Consolide 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 final 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 enlace 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 para tu nombre de dominio personalizado
Un dominio importado en AWS Certificate Manager (ACM) según Región de AWS su elección
Limitaciones
El nombre del bucket de Amazon S3 debe coincidir con el nombre de dominio del punto final. Este requisito es para garantizar que el punto de enlace Amazon S3 se pueda atender a través del punto de enlace de API único.
El nombre de dominio personalizado utilizado en API Gateway debe coincidir con el nombre de dominio del único punto final de la API.
Algunos Servicios de AWS no están disponibles en todos Regiones de AWS. Para ver la disponibilidad regional, consulta AWS Servicios por región
. Para conocer puntos de enlace específicos, consulte Puntos de enlace y cuotas del servicio y elija el enlace para el servicio.
Arquitectura
El siguiente diagrama muestra la arquitectura y el flujo de trabajo de destino para 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 Lambda genera la URL prefirmada y apunta al punto final 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 final 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 Application Load Balancer interno para conectarse a Global Accelerator.
Asignación de un nombre de dominio personalizado para API Gateway con un certificado ACM adjunto.
Despliegue de una API Gateway privada integrada con una función Lambda.
La función Lambda está equipada con un rol AWS Identity and Access Management (IAM) adjunto (con GetObjectpermisos).
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 Acceleratores un servicio global que admite varios Regiones de AWS puntos finales. Puede crear aceleradores que dirijan el tráfico a puntos finales óptimos a través de la AWS red 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 le 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 despliegue. 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
PresignedUrl
generación.Siga el principio del mínimo privilegio y conceda los permisos mínimos necesarios para realizar 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 |
---|---|---|
Elige un nombre de dominio. | Elija un nombre de dominio público para el punto de conexión unificado de Amazon S3. El nombre de dominio también se utiliza como 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 la red. | Para aprovisionar recursos de red, ejecute los siguientes comandos:
Durante la ejecución del | Administrador de la nube, administrador de AWS |
Aprovisione API Gateway, Amazon S3 y Lambda. | Para aprovisionar recursos de red, utilice 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 | Para editar las opciones de la variable constante, utilice los siguientes comandos:
En los comandos, sustituya cada marcador de posición por su propia información:
| Administrador de la nube, administrador de AWS |
Despliegue 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 |
---|---|---|
Compruebe las direcciones IP del punto final. | Para comprobar que el dominio de este patrón tiene 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 | Administrador de la nube, administrador de AWS |
Invoque la API para generar una URL prefirmada. | Para generar una URL prefirmada, llama a la URL desde un navegador o un cliente de API (por ejemplo, Postman
Sustituya los valores de los marcadores de posición por | Propietario de la aplicación |
Comprueba el resultado. | El resultado esperado es que recibas 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 recursos, utilice los siguientes comandos:
| Administrador de la nube, administrador de AWS |
Destruya los recursos de la red. | Para eliminar los recursos de la red, utilice los siguientes comandos:
| Administrador de la nube, administrador de AWS |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Destruye las pilas. | Para destruir las pilas de aplicaciones y de la VPC, utilice el siguiente comando:
| Administrador de la nube, administrador de AWS |
Vacíe y elimine los depósitos de Amazon S3. | Vacíe y elimine el objeto (bucket de Amazon S3) y los registros (bucket Amazon S3) que no se eliminen de forma predeterminada. Los nombres de los buckets de Amazon S3 son Si prefiere usar el 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