Configuración de una conexión de Apache Airflow mediante un secreto de AWS Secrets Manager
AWS Secrets Manager es un backend de Apache Airflow alternativo compatible con un entorno de Amazon Managed Workflows para Apache Airflow. En esta guía, se muestra cómo usar AWS Secrets Manager para almacenar de forma segura los secretos de las variables de Apache Airflow y una conexión de Apache Airflow en Amazon Managed Workflows para Apache Airflow.
nota
-
Los secretos creados tendrán un costo. Para obtener información sobre el precio de Secrets Manager, consulte precios de AWS
. -
Amazon MWAA también admite Almacén de parámetros de AWS Systems Manager como backend de secretos. Para obtener más información, consulte la documentación de Amazon Provider Package
.
Contenido
Primer paso: otorgar permiso a Amazon MWAA para acceder a las claves secretas de Secrets Manager
El rol de ejecución de su entorno de Amazon MWAA necesita acceso de lectura a la clave secreta de AWS Secrets Manager. La siguiente política de IAM permite el acceso de lectura y escritura mediante la política SecretsManagerReadWrite
Pasos para asociar la política a su rol de ejecución
-
Abra la página Entornos
en la consola de Amazon MWAA. -
Seleccione un entorno.
-
Elija su rol de ejecución en el panel Permisos.
-
Seleccione Asociar políticas.
-
Escriba
SecretsManagerReadWriteen el campo de texto Filtrar políticas. -
Elija Asociar política.
Si no desea usar una política de permisos administrada por AWS, puede actualizar directamente el rol de ejecución de su entorno para permitir cualquier nivel de acceso a sus recursos de Secrets Manager. Por ejemplo, la siguiente declaración de política otorga acceso de lectura a todos los secretos que cree en una Región de AWS específica en Secrets Manager.
Segundo paso: crear el backend de Secrets Manager como opción de configuración de Apache Airflow
En la siguiente sección se describe cómo crear una opción de configuración de Apache Airflow en la consola de Amazon MWAA para el backend de AWS Secrets Manager. Si usa una configuración con el mismo nombre en airflow.cfg, la configuración que cree en los siguientes pasos tendrá prioridad y anulará los ajustes de configuración.
-
Abra la página Entornos
en la consola de Amazon MWAA. -
Seleccione un entorno.
-
Elija Editar.
-
Elija Siguiente.
-
Seleccione Agregar configuración personalizada en el panel Opciones de configuración de Airflow. Agregue los siguientes pares clave-valor:
-
:secrets.backendairflow.providers.amazon.aws.secrets.secrets_manager.SecretsManagerBackend -
: Consecrets.backend_kwargs, se configura Apache Airflow para poder buscar cadenas de conexión y variables en rutas de{"connections_prefix" : "airflow/connections", "variables_prefix" : "airflow/variables"}airflow/connections/*yairflow/variables/*.Puede utilizar un patrón de búsqueda
para reducir el número de llamadas a la API que Amazon MWAA realiza a Secrets Manager en su nombre. Si no especifica un patrón de búsqueda, Apache Airflow busca todas las conexiones y variables en el backend configurado. Al especificar un patrón, se reducen las posibles rutas que busca Apache Airflow. Así de reducen los costos relacionados con el uso de Secrets Manager con Amazon MWAA. Para especificar un patrón de búsqueda, especifique los parámetros
connections_lookup_patternyvariables_lookup_pattern. Estos parámetros aceptan una cadena RegEx como entrada. Por ejemplo, para buscar secretos que comiencen portest, introduzca lo siguiente parasecrets.backend_kwargs:{ "connections_prefix": "airflow/connections", "connections_lookup_pattern": "^test", "variables_prefix" : "airflow/variables", "variables_lookup_pattern": "^test" }nota
Para usar
connections_lookup_patternyvariables_lookup_pattern, debe instalar la versión 7.3.0 o superior deapache-airflow-providers-amazon. Para obtener más información sobre la actualización de los paquetes de proveedores a versiones más recientes, consulte Archivo de restricciones.
-
-
Seleccione Save.
Paso tres: generar una cadena URI de conexión de AWS a Apache Airflow
Para crear una cadena de conexión, utilice la tecla “tab” del teclado para aplicar los pares clave-valor en el objeto Conexiónextra en la sesión del shell. En la siguiente sección, se explican los pasos para generar una cadena URI de conexión a Apache Airflow
Paso cuatro: añadir las variables en Secrets Manager
En la siguiente sección se describe cómo crear el secreto de una variable en Secrets Manager.
Pasos para crear el secreto
-
Abra la consola de AWS Secrets Manager
. -
Elija Almacenar un secreto nuevo.
-
Elija Otro tipo de secreto.
-
En el panel Especificar los pares clave-valor para almacenarlos en este secreto, elija Texto simple.
-
Añada el valor de la variable como Texto simple en el siguiente formato.
"YOUR_VARIABLE_VALUE"Por ejemplo, para especificar un número entero:
14Por ejemplo, para especificar una cadena:
"mystring" -
En Clave de cifrado, elija una opción de clave de AWS KMS de la lista desplegable.
-
Introduzca un nombre en el campo de texto para el nombre del secreto con el formato que se indica a continuación.
airflow/variables/YOUR_VARIABLE_NAMEPor ejemplo:
airflow/variables/test-variable -
Elija Siguiente.
-
En la página Configurar secreto, en el panel Nombre y descripción del secreto, haga lo siguiente.
-
En Nombre del secreto, proporcione un nombre para el secreto.
-
(Opcional) En Descripción, escriba una descripción del nombre de su secreto.
Elija Siguiente.
-
-
En Configurar la rotación. Opcional, deje las opciones predeterminadas y seleccione Siguiente.
-
Repita estos pasos en Secrets Manager para cualquier variable adicional que desee añadir.
-
En la página Revisar, revise los detalles de su secreto y, a continuación, elija Almacenar.
Paso cinco: añadir la conexión en Secrets Manager
En la siguiente sección se describe cómo crear el secreto para el URI de la cadena de conexión en Secrets Manager.
Pasos para crear el secreto
-
Abra la consola de AWS Secrets Manager
. -
Elija Almacenar un secreto nuevo.
-
Elija Otro tipo de secreto.
-
En el panel Especificar los pares clave-valor para almacenarlos en este secreto, elija Texto simple.
-
Añada la cadena URI de conexión como Texto simple con el formato que se indica a continuación.
YOUR_CONNECTION_URI_STRINGPor ejemplo:
mysql://288888a0-50a0-888-9a88-1a111aaa0000.a1.us-east-1.airflow.amazonaws.com%2Fhome?role_arn=arn%3Aaws%3Aiam%3A%3A001122332255%3Arole%2Fservice-role%2FAmazonMWAA-MyAirflowEnvironment-iAaaaA®ion_name=us-east-1aviso
Apache Airflow analiza cada uno de los valores de la cadena de conexión. No use comillas simples ni dobles, pues al hacerlo se analizaría la conexión como una sola cadena.
-
En Clave de cifrado, elija una opción de clave de AWS KMS de la lista desplegable.
-
Introduzca un nombre en el campo de texto para el nombre del secreto con el formato que se indica a continuación.
airflow/connections/YOUR_CONNECTION_NAMEPor ejemplo:
airflow/connections/myconn -
Elija Siguiente.
-
En la página Configurar secreto, en el panel Nombre y descripción del secreto, haga lo siguiente.
-
En Nombre del secreto, proporcione un nombre para el secreto.
-
(Opcional) En Descripción, escriba una descripción del nombre de su secreto.
Elija Siguiente.
-
-
En Configurar la rotación. Opcional, deje las opciones predeterminadas y seleccione Siguiente.
-
Repita estos pasos en Secrets Manager para cualquier variable adicional que desee añadir.
-
En la página Revisar, revise los detalles de su secreto y, a continuación, elija Almacenar.
Código de muestra
-
Aprenda a usar la clave secreta para la conexión de Apache Airflow (
myconn) en esta página usando el código de ejemplo que se encuentra en Uso de una clave secreta en AWS Secrets Manager para una conexión de Apache Airflow. -
Aprenda a usar la clave secreta para la variable de Apache Airflow (
test-variable) en esta página usando el código de ejemplo que se encuentra en Uso de una clave secreta en AWS Secrets Manager para una variable de Apache Airflow.
Recursos
-
Para obtener más información sobre cómo configurar los secretos en Secrets Manager con la consola y la AWS CLI, consulte cómo crear un secreto en la guía del usuario de AWS Secrets Manager.
-
Utilice un script de Python para migrar un gran volumen de variables y conexiones de Apache Airflow a Secrets Manager en Mueva sus conexiones y variables de Apache Airflow a AWS Secrets Manager
.
Siguientes pasos
-
Aprenda a generar un token para acceder a la interfaz de usuario de Apache Airflow en Acceso a Apache Airflow.