Tutoriel : Automatisez la gestion des points de terminaison de votre propre environnement sur Amazon MWAA - Amazon Managed Workflows for Apache Airflow

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Tutoriel : Automatisez la gestion des points de terminaison de votre propre environnement sur Amazon MWAA

Si vous gérez AWS Organizationsplusieurs AWS comptes partageant des ressources, Amazon MWAA vous permet de créer et de gérer vos propres points de terminaison Amazon VPC. Cela signifie que vous pouvez utiliser des politiques de sécurité plus strictes qui n'autorisent l'accès qu'aux ressources requises par votre environnement.

Lorsque vous créez un environnement dans un Amazon VPC partagé, le compte propriétaire du VPC Amazon principal (propriétaire) partage les deux sous-réseaux privés requis par Amazon MWAA avec d'autres comptes (participants) appartenant à la même organisation. Les comptes participants qui partagent ces sous-réseaux peuvent ensuite afficher, créer, modifier et supprimer des environnements dans le VPC partagé.

Lorsque vous créez un environnement dans un Amazon VPC partagé ou soumis à des règles, Amazon MWAA crée d'abord les ressources VPC du service, puis entre dans PENDINGun état pendant 72 heures maximum.

Lorsque le statut de l'environnement passe de CREATING àPENDING, Amazon MWAA envoie une EventBridge notification Amazon concernant le changement d'état. Cela permet au compte propriétaire de créer les points de terminaison requis pour le compte des participants en fonction des informations de service des points de terminaison provenant de la console ou de l'API Amazon MWAA, ou par programmation. Dans ce qui suit, nous créons de nouveaux points de terminaison Amazon VPC à l'aide d'une fonction Lambda et d'une EventBridge règle qui écoute les notifications de changement d'état d'Amazon MWAA.

Ici, nous créons les nouveaux points de terminaison dans le même Amazon VPC que l'environnement. Pour configurer un Amazon VPC partagé, créez la EventBridge règle et la fonction Lambda dans le compte du propriétaire, ainsi que l'environnement Amazon MWAA dans le compte du participant.

Prérequis

Pour effectuer les étapes de ce didacticiel, vous aurez besoin des éléments suivants :

  • ...

Création de l'Amazon VPC

Utilisez le AWS CloudFormation modèle et la AWS CLI commande suivants pour créer un nouvel Amazon VPC. Le modèle configure les ressources Amazon VPC et modifie la politique du point de terminaison afin de restreindre l'accès à une file d'attente spécifique.

  1. Téléchargez le AWS CloudFormation modèle, puis décompressez le .yml fichier.

  2. Dans une nouvelle fenêtre d'invite de commande, accédez au dossier dans lequel vous avez enregistré le modèle, puis create-stackutilisez-le pour créer la pile. L'--template-bodyindicateur indique le chemin d'accès au modèle.

    $ aws cloudformation create-stack --stack-name stack-name --template-body file://cfn-vpc-private-network.yml

Dans la section suivante, vous allez créer la fonction Lambda.

Créer la fonction Lambda

Utilisez le code Python et la politique IAM JSON suivants pour créer une nouvelle fonction Lambda et un nouveau rôle d'exécution. Cette fonction crée des points de terminaison Amazon VPC pour un serveur Web Apache Airflow privé et une file d'attente Amazon SQS. Amazon MWAA utilise Amazon SQS pour mettre en file d'attente les tâches avec Celery entre plusieurs travailleurs lors de la mise à l'échelle de votre environnement.

  1. Téléchargez le code de la fonction Python.

  2. Téléchargez la politique d'autorisation IAM, puis décompressez le fichier.

  3. Ouvrez une invite de commande, puis accédez au dossier dans lequel vous avez enregistré la politique d'autorisation JSON. Utilisez la create-rolecommande IAM pour créer le nouveau rôle.

    $ aws iam create-role --role-name function-role \ --assume-role-policy-document file://lambda-mwaa-vpce-policy.json

    Notez l'ARN du rôle indiqué dans la AWS CLI réponse. À l'étape suivante, nous spécifierons ce nouveau rôle comme rôle d'exécution de la fonction à l'aide de son ARN.

  4. Accédez au dossier dans lequel vous avez enregistré le code de fonction, puis utilisez la create-functioncommande pour créer une nouvelle fonction.

    $ aws lambda create-function --function-name mwaa-vpce-lambda \ --zip-file file://mwaa-lambda-shared-vpc.zip --runtime python3.8 --role arn:aws:iam::123456789012:role/function-role --handler lambda_handler

    Notez la fonction ARN figurant dans la AWS CLI réponse. À l'étape suivante, nous spécifierons l'ARN pour configurer la fonction en tant que cible pour une nouvelle EventBridge règle.

Dans la section suivante, vous allez créer la EventBridge règle qui invoque cette fonction lorsque l'environnement entre dans un PENDING état.

Création de la EventBridge règle

Procédez comme suit pour créer une nouvelle règle qui écoute les notifications Amazon MWAA et cible votre nouvelle fonction Lambda.

  1. Utilisez la EventBridge put-rule commande pour créer une nouvelle EventBridge règle.

    $ aws events put-rule --name "mwaa-lambda-rule" \ --event-pattern "{\"source\":[\"aws.airflow\"],\"detail-type\":[\"MWAA Environment Status Change\"]}"

    Le modèle d'événement écoute les notifications qu'Amazon MWAA envoie chaque fois que l'état de l'environnement change.

    { "source": ["aws.airflow"], "detail-type": ["MWAA Environment Status Change"] }
  2. Utilisez la put-targets commande pour ajouter la fonction Lambda comme cible pour la nouvelle règle.

    $ aws events put-targets --rule "mwaa-lambda-rule" \ --targets "Id"="1","Arn"="arn:aws::lambda:region:123456789012:function:mwaa-vpce-lambda"

Vous êtes prêt à créer un nouvel environnement Amazon MWAA avec des points de terminaison Amazon VPC gérés par le client.

Création de l'environnement Amazon MWAA

Utilisez la console Amazon MWAA pour créer un nouvel environnement avec des points de terminaison Amazon VPC gérés par le client.

  1. Ouvrez la console Amazon MWAA et choisissez Create an environment.

  2. Pour Nom, entrez un nom unique.

  3. Pour la version Airflow, choisissez la dernière version.

  4. Choisissez un compartiment et un DAGs dossier Amazon S3, par exemple dags/ à utiliser avec l'environnement, puis choisissez Next.

  5. Sur la page Configurer les paramètres avancés, procédez comme suit :

    1. Pour Virtual Private Cloud, choisissez le VPC Amazon que vous avez créé à l'étape précédente.

    2. Pour accéder au serveur Web, choisissez Réseau public (accessible par Internet).

    3. Pour les groupes de sécurité, choisissez le groupe de sécurité que vous avez créé avec AWS CloudFormation. Étant donné que les groupes de sécurité pour les AWS PrivateLink points de terminaison de l'étape précédente sont autoréférencés, vous devez choisir le même groupe de sécurité pour votre environnement.

    4. Pour la gestion des terminaux, choisissez les points de terminaison gérés par le client.

  6. Conservez les paramètres par défaut restants, puis choisissez Next.

  7. Passez en revue vos sélections, puis choisissez Créer un environnement.

Astuce

Pour plus d'informations sur la configuration d'un nouvel environnement, consultez Getting started with Amazon MWAA.

Lorsque l'environnement l'estPENDING, Amazon MWAA envoie une notification correspondant au modèle d'événement que vous avez défini pour votre règle. La règle invoque votre fonction Lambda. La fonction analyse l'événement de notification et obtient les informations de point de terminaison requises pour le serveur Web et la file d'attente Amazon SQS. Il crée ensuite les points de terminaison dans votre Amazon VPC.

Lorsque les points de terminaison sont disponibles, Amazon MWAA reprend la création de votre environnement. Lorsque vous êtes prêt, l'état de l'environnement devient AVAILABLE et vous pouvez accéder au serveur Web Apache Airflow à l'aide de la console Amazon MWAA.