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.
Descargar datos de un clúster de Amazon Redshift de cuentas a Amazon S3
Creado por Andrew Kamel () AWS
Entorno: producción | Tecnologías: bases de datos; análisis; sin servidor | |
Carga de trabajo: código abierto | AWSservicios: AWS Lambda; Amazon Redshift; Amazon S3; Secrets Manager AWS |
Resumen
Al probar aplicaciones, resulta útil disponer de datos de producción en el entorno de pruebas. El uso de los datos de producción puede proporcionarle una evaluación más precisa de la aplicación que está desarrollando.
Este patrón extrae datos de un clúster de Amazon Redshift en un entorno de producción a un bucket de Amazon Simple Storage Service (Amazon S3) en un entorno de desarrollo en Amazon Web Services ().AWS
El patrón recorre la configuración de ambas PROD cuentas DEV y, entre ellas, se incluyen las siguientes:
Recursos necesarios de
AWS Identity and Access Management (IAM) funciones
Ajustes de red en las subredes, los grupos de seguridad y la nube privada virtual (VPC) para admitir la conexión Amazon Redshift
Un ejemplo de AWS Lambda función con un tiempo de ejecución de Python para probar la arquitectura
Para conceder acceso al clúster de Amazon Redshift, el patrón se utiliza AWS Secrets Manager para almacenar las credenciales pertinentes. La ventaja es disponer de toda la información necesaria para conectarse directamente al clúster de Amazon Redshift sin necesidad de saber dónde reside el clúster de Amazon Redshift. Además, puede supervisar el uso del secreto.
El secreto guardado en Secrets Manager incluye el host del clúster de Amazon Redshift, el nombre de la base de datos, el puerto y las credenciales pertinentes.
Para obtener información sobre las consideraciones de seguridad al utilizar este patrón, consulte la sección de prácticas recomendadas.
Requisitos previos y limitaciones
Requisitos previos
Un clúster de Amazon Redshift que se ejecuta en la cuenta PROD
Se creó un bucket de S3 en la cuenta DEV
VPCintercalando entre las PROD cuentas DEV y, con las tablas de rutas ajustadas en consecuencia
DNSlos nombres de host y la DNS resolución están habilitados para ambos dispositivos sincronizados VPCs
Limitaciones
Según la cantidad de datos que desee consultar, es posible que se agote el tiempo de espera de la función Lambda.
Si la ejecución tarda más tiempo que el tiempo de espera máximo de Lambda (15 minutos), utilice un enfoque asíncrono para el código Lambda. El ejemplo de código de este patrón usa la biblioteca psycopg2
para Python, que actualmente no admite el procesamiento asíncrono. Algunos Servicios de AWS no están disponibles en todos. Regiones de AWS Para ver la disponibilidad por región, consulta Servicios de AWS por región
. Para ver puntos de enlace específicos, consulta la página de puntos de enlace y cuotas del servicio y elige el enlace del servicio.
Arquitectura
El siguiente diagrama muestra la arquitectura de destino, con cuentas DEV y PROD cuentas.
En el diagrama, se muestra el siguiente flujo de trabajo:
La función Lambda de la DEV cuenta asume la IAM función necesaria para acceder a las credenciales de Amazon Redshift en Secrets Manager de la cuenta. PROD
A continuación, la función Lambda recupera el secreto del clúster de Amazon Redshift.
La función Lambda de la DEV cuenta utiliza la información para conectarse al clúster de Amazon Redshift de la cuenta a través PROD del peered. VPCs
A continuación, la función Lambda envía un comando de descarga para consultar el clúster de Amazon Redshift de la cuenta. PROD
El clúster de Amazon Redshift de la PROD cuenta asume la IAM función correspondiente para acceder al bucket de S3 de la DEV cuenta.
El clúster de Amazon Redshift descarga los datos consultados en el bucket de S3 de la cuenta. DEV
Consulta de datos de Amazon Redshift
En el siguiente diagrama se muestran las funciones que se utilizan para recuperar las credenciales de Amazon Redshift y conectarse al clúster de Amazon Redshift. El flujo de trabajo lo inicia la función Lambda.
En el diagrama, se muestra el siguiente flujo de trabajo:
El que
CrossAccount-SM-Read-Role
está en la DEV cuenta asume que estáSM-Read-Role
en la PROD cuenta.El
SM-Read-Role
rol usa la política adjunta para recuperar el secreto de Secrets Manager.Las credenciales se utilizan para acceder al clúster de Amazon Redshift.
Carga de datos a Amazon S3
El siguiente diagrama muestra el proceso de lectura y escritura entre cuentas para extraer datos y subirlos a Amazon S3. El flujo de trabajo lo inicia la función Lambda. El patrón encadena IAM los roles en Amazon Redshift. El comando unload que proviene del clúster de Amazon Redshift asume el y, a continuación, asume CrossAccount-S3-Write-Role
el. S3-Write-Role
Este encadenamiento de funciones permite a Amazon Redshift acceder a Amazon S3.
El flujo de trabajo incluye los siguientes pasos:
El que
CrossAccount-SM-Read-Role
está en la DEV cuenta asume queSM-Read-Role
está en la PROD cuenta.SM-Read-Role
Recupera las credenciales de Amazon Redshift de Secrets Manager.La función Lambda se conecta al clúster de Amazon Redshift y envía una consulta.
El clúster de Amazon Redshift asume que.
CrossAccount-S3-Write-Role
Se
CrossAccount-S3-Write-Role
supone que estáS3-Write-Role
en la DEV cuenta.Los resultados de la consulta se descargan en el depósito de S3 de la DEV cuenta.
Herramientas
Servicios de AWS
AWS Key Management Service (AWS KMS) le ayuda a crear y controlar claves criptográficas para proteger sus datos.
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.
Amazon Redshift es un servicio de almacenamiento de datos gestionado a escala de petabytes en la nube. AWS
AWS Secrets Managerle ayuda a reemplazar las credenciales codificadas en su código, incluidas las contraseñas, con una API llamada a Secrets Manager para recuperar el secreto mediante programación.
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.
Repositorio de código
El código de este patrón está disponible en el GitHub unload-redshift-to-s repositorio 3-python.
Prácticas recomendadas
Exención de responsabilidad de seguridad
Antes de implementar esta solución, tenga en cuenta las siguientes recomendaciones de seguridad importantes:
Recuerde que conectar las cuentas de desarrollo y producción puede aumentar el alcance y reducir el nivel general de seguridad. Recomendamos implementar esta solución solo temporalmente, extraer la parte de datos requerida y, a continuación, destruir inmediatamente los recursos implementados. Para destruir los recursos, debe eliminar la función Lambda, eliminar todas las IAM funciones y políticas creadas para esta solución y revocar cualquier acceso a la red que se haya concedido entre las cuentas.
Consulte a sus equipos de seguridad y cumplimiento antes de copiar cualquier dato de los entornos de producción a los de desarrollo. Por lo general, la información de identificación personal (PHI), la información de salud protegida () y otros datos confidenciales o regulados no deben copiarse de esta manera. PII Copie únicamente la información no confidencial que esté disponible públicamente (por ejemplo, datos bursátiles públicos de la interfaz de una tienda). Considere la posibilidad de tokenizar o anonimizar los datos, o de generar datos de prueba sintéticos, en lugar de utilizar los datos de producción siempre que sea posible. Uno de los principios de AWS seguridad es mantener a las personas alejadas de los datos. En otras palabras, los desarrolladores no deben realizar operaciones en la cuenta de producción.
Restrinja el acceso a la función Lambda en la cuenta de desarrollo porque puede leer datos del clúster de Amazon Redshift en el entorno de producción.
Para evitar interrumpir el entorno de producción, implemente las siguientes recomendaciones:
Utilice una cuenta de desarrollo independiente y dedicada para las actividades de prueba y desarrollo.
Implemente controles estrictos de acceso a la red y limite el tráfico entre cuentas solo a lo necesario.
Supervise y audite el acceso al entorno de producción y a las fuentes de datos.
Implemente controles de acceso con privilegios mínimos para todos los recursos y servicios involucrados.
Revise y rote periódicamente las credenciales, como los AWS Secrets Manager secretos y las claves de acceso a los IAM roles.
Consulte la siguiente documentación de seguridad para ver los servicios utilizados en este artículo:
La seguridad es una de las principales prioridades a la hora de acceder a los datos y recursos de producción. Siga siempre las mejores prácticas, implemente controles de acceso con privilegios mínimos y revise y actualice periódicamente sus medidas de seguridad.
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Cree un secreto para el clúster de Amazon Redshift. | Para crear el secreto del clúster de Amazon Redshift, haga lo siguiente:
| DevOps ingeniero |
Cree un rol para acceder a Secrets Manager. | Para crear el rol, haga lo siguiente:
| DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Cree un rol para acceder al bucket de S3. | Para crear el rol para acceder al bucket de S3, haga lo siguiente:
| DevOps ingeniero |
Cree el rol de Amazon Redshift. | Para crear el rol de Amazon Redshift, haga lo siguiente:
| DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Implemente la función de Lambda. | Para implementar una función Lambda en el sistema interconectadoVPC, haga lo siguiente:
| DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Importe los recursos necesarios. | Para importar los recursos necesarios, ejecute los siguientes comandos:
| Desarrollador de aplicaciones |
Ejecute la función de controlador Lambda. | La función Lambda usa AWS Security Token Service (AWS STS) para el acceso entre cuentas y la administración temporal de credenciales. La función utiliza la AssumeRole API operación para asumir temporalmente los permisos del rol. Para ejecutar la función Lambda, utilice el siguiente código de ejemplo:
| Desarrollador de aplicaciones |
Obtén el secreto. | Para obtener el secreto de Amazon Redshift, utilice el siguiente código de ejemplo:
| Desarrollador de aplicaciones |
Ejecute el comando unload. | Para descargar los datos en el depósito de S3, utilice el siguiente código de ejemplo.
| Desarrollador de aplicaciones |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Elimine la función de Lambda. | Para evitar incurrir en costes imprevistos, elimine los recursos y la conexión entre las DEV cuentas y. PROD Para eliminar la función Lambda, haga lo siguiente:
| DevOps ingeniero |
Elimine las IAM funciones y las políticas. | Elimine los IAM roles y las políticas de las PROD cuentas DEV y. En la DEV cuenta, haga lo siguiente:
En la PROD cuenta, haga lo siguiente:
| DevOps ingeniero |
Elimina el secreto en Secrets Manager. | Para eliminar el secreto, haga lo siguiente:
| DevOps ingeniero |
Elimine las reglas VPC de los grupos de seguridad y de emparejamiento. | Para eliminar las reglas de VPC los grupos de seguridad y de emparejamiento, haga lo siguiente:
| DevOps ingeniero |
Elimine los datos del depósito de S3. | Para eliminar los datos de Amazon S3, haga lo siguiente:
| DevOps ingeniero |
Limpia AWS KMS las llaves. | Si ha creado alguna AWS KMS clave personalizada para el cifrado, haga lo siguiente:
| DevOps ingeniero |
Revisa y elimina los CloudWatch registros de Amazon. | Para eliminar los CloudWatch registros, haga lo siguiente:
| DevOps ingeniero |
Recursos relacionados
Información adicional
Tras descargar los datos de Amazon Redshift a Amazon S3, puede analizarlos con Amazon Athena.
Amazon Athena es un servicio de consultas de big data que resulta útil cuando se necesita acceder a grandes volúmenes de datos. Puede utilizar Athena sin tener que aprovisionar servidores o bases de datos. Athena admite consultas complejas y puede ejecutarla en diferentes objetos.
Como ocurre con la mayoría Servicios de AWS, la principal ventaja de usar Athena es que proporciona una gran flexibilidad en la forma de ejecutar las consultas sin la complejidad adicional. Cuando usa Athena, puede consultar diferentes tipos de datos, como CSV yJSON, en Amazon S3 sin cambiar el tipo de datos. Puede consultar datos de varias fuentes, incluso externas AWS. Athena reduce la complejidad porque no es necesario administrar los servidores. Athena lee los datos directamente de Amazon S3 sin cargarlos ni cambiarlos antes de ejecutar la consulta.