Tutorial: cómo automatizar la administración de sus propios puntos de conexión de entorno en Amazon MWAA
Si usa AWS Organizations para administrar varias Cuentas de AWS que comparten recursos, Amazon MWAA le permite crear y administrar sus propios puntos de conexión de Amazon VPC. Esto significa que puede usar políticas de seguridad más estrictas que le permitan acceder únicamente a los recursos que necesite su entorno.
Cuando crea un entorno en una Amazon VPC compartida, la cuenta propietaria de la Amazon VPC principal (propietaria) comparte las dos subredes privadas que requiere Amazon MWAA con otras cuentas (participantes) que pertenecen a la misma organización. A continuación, las cuentas participantes que comparten esas subredes pueden ver, crear, modificar y eliminar entornos en la VPC compartida.
Cuando cree un entorno en una Amazon VPC compartida o de algún otro modo restringida por políticas, Amazon MWAA primero creará los recursos de la VPC del servicio y, a continuación, entrará en un estado PENDING por hasta 72 horas.
Cuando el estado del entorno cambia de CREATING a PENDING, Amazon MWAA envía una notificación de Amazon EventBridge sobre el cambio de estado. Esto le permite a la cuenta propietaria crear los puntos de conexión necesarios en nombre de los participantes, según la información del servicio de punto de conexión desde la consola o API de Amazon MWAA, o mediante programación. En el siguiente ejemplo, creamos nuevos puntos de conexión de Amazon VPC mediante una función de Lambda y una regla de EventBridge que escucha notificaciones de cambios de estado de Amazon MWAA.
Aquí creamos los nuevos puntos de conexión en la misma Amazon VPC que el entorno. Para configurar una Amazon VPC compartida, cree la regla de EventBridge y la función de Lambda en la cuenta propietaria, y el entorno de Amazon MWAA en la cuenta participante.
Temas
Requisitos previos
Para completar los pasos en este tutorial, deberá hacer lo siguiente:
-
...
Creación de la Amazon VPC
Utilice la siguiente plantilla de CloudFormation y el siguiente comando de la AWS CLI para crear una nueva Amazon VPC. La plantilla configura los recursos de Amazon VPC y modifica la política de punto de conexión para restringir el acceso a una cola específica.
-
Descargue la plantilla de CloudFormation y, a continuación, descomprima el archivo
.yml. -
En una nueva ventana de petición de comandos, navegue hasta la carpeta donde guardó la plantilla y, a continuación, use
create-stackpara crear la pila. El indicador--template-bodyespecifica la ruta a la plantilla.aws cloudformation create-stack --stack-namestack-name--template-body file://cfn-vpc-private-network.yml
En la siguiente sección, creará la función de Lambda.
Crear la función de Lambda
Utilice el siguiente código Python y la política JSON de IAM para crear una nueva función de Lambda y un rol de ejecución. Esta función crea puntos de conexión de Amazon VPC para un servidor web Apache Airflow privado y una cola de Amazon SQS. Amazon MWAA utiliza Amazon SQS para poner en cola tareas con Celery entre varios procesos de trabajo a la hora de escalar su entorno.
-
Descargue el código de la función Python.
-
Descargue la política de permisos de IAM y, a continuación, descomprima el archivo.
-
Abra un comando de petición y, a continuación, navegue hasta la carpeta en la que guardó la política de permisos de JSON. Use el comando de IAM
create-rolepara crear el nuevo rol.aws iam create-role --role-namefunction-role\ --assume-role-policy-document file://lambda-mwaa-vpce-policy.jsonAnote el ARN del rol de la respuesta AWS CLI. En el siguiente paso, especificamos este nuevo rol como el rol de ejecución de la función mediante su ARN.
-
Navegue hasta la carpeta en la que guardó el código de la función y, a continuación, utilice el comando
create-functionpara crear una función nueva.aws lambda create-function --function-namemwaa-vpce-lambda\ --zip-file file://mwaa-lambda-shared-vpc.zip --runtime python3.8 --role arn:aws:iam::123456789012:role/function-role--handler lambda_handlerObserve la función ARN de la respuesta AWS CLI. En el siguiente paso, especificamos el ARN para configurar la función como destino para una nueva regla de EventBridge.
En la siguiente sección, creará la regla de EventBridge que invoca esta función cuando el entorno entre en estado PENDING.
Crear la regla de EventBridge
Haga lo siguiente para crear una nueva regla que escuche las notificaciones de Amazon MWAA y se dirija a su nueva función de Lambda.
-
Use el comando
put-rulede EventBridge para crear una nueva regla de EventBridge.aws events put-rule --name "mwaa-lambda-rule" \ --event-pattern "{\"source\":[\"aws.airflow\"],\"detail-type\":[\"MWAA Environment Status Change\"]}"El patrón de eventos escucha las notificaciones que Amazon MWAA envía cada vez que cambia el estado de un entorno.
{ "source": ["aws.airflow"], "detail-type": ["MWAA Environment Status Change"] } -
Utilice el comando
put-targetspara agregar la función de Lambda como destino de la nueva regla.aws events put-targets --rule "mwaa-lambda-rule" \ --targets "Id"="1","Arn"="arn:aws:lambda:us-east-1:123456789012:function:mwaa-vpce-lambda"
Ya está listo para crear un nuevo entorno de Amazon MWAA con puntos de conexión de Amazon VPC administrados por el cliente.
Crear el entorno de Amazon MWAA
Utilice la consola de Amazon MWAA para crear un nuevo entorno con puntos de conexión de Amazon VPC administrados por el cliente.
-
Abra la consola de Amazon MWAA
y seleccione Crear un entorno. -
En Nombre, escriba un nombre único.
-
En Versión de Airflow, seleccione la versión más reciente.
-
Elija un bucket de Amazon S3 y una carpeta de DAG, como
dags/, para utilizarlos con el entorno y, a continuación, seleccione Siguiente. -
En la página Configurar los ajustes avanzados, haga lo siguiente:
-
En Nube privada virtual, elija la Amazon VPC que creó en el paso anterior.
-
En Webserver access (Acceso del servidor web), seleccione Public network (internet accessible) (Red pública (con acceso a Internet)).
-
En Grupos de seguridad, seleccione el grupo de seguridad que creó con CloudFormation. Como los grupos de seguridad de los puntos de conexión AWS PrivateLink del paso anterior se autorreferencian, debe elegir el mismo grupo de seguridad para su entorno.
-
En Administración de puntos de conexión, seleccione Puntos de conexión administrados por el cliente.
-
-
Conserve el resto de la configuración predeterminada y, a continuación, seleccione Siguiente.
-
Revise su selección y, a continuación, elija Crear entorno.
sugerencia
Para obtener más información sobre cómo configurar un nuevo entorno, consulte Introducción a Amazon MWAA.
Cuando el estado del entorno es PENDING, Amazon MWAA envía una notificación que coincide con el patrón de eventos que usted estableció para la regla. La regla invoca su función de Lambda. La función analiza el evento de notificación y obtiene la información de punto de conexión requerida para el servidor web y la cola de Amazon SQS. A continuación, crea los puntos de conexión en su Amazon VPC.
Cuando los puntos de conexión están disponibles, Amazon MWAA reanuda la creación del entorno. Una vez que haya finalizado, el estado del entorno cambiará a AVAILABLE y se podrá acceder al servidor web Apache Airflow mediante la consola de Amazon MWAA.