Airflow géré (3e génération) | Airflow géré (2e génération) | Airflow géré (ancienne 1re génération)
Cette page explique comment configurer des services SMTP pour votre environnement Airflow géré.
Avant de commencer
Si votre environnement Airflow géré est configuré pour une adresse IP privée, assurez-vous qu'il dispose d'une connectivité au point de terminaison de l'API de votre service de messagerie externe (par exemple,
https://api.sendgrid.com, ou le serveur SMTP de votre choix).Les composants Airflow dans les environnements d'adresse IP publique établissent des connexions sortantes, y compris l'envoi de messages électroniques, à partir d'adresses IP publiques et de ports alloués automatiquement. Si vous souhaitez que vos environnements d'adresse IP publique envoient des e-mails à partir d'adresses IP et de ports prédéterminés, vous pouvez le faire en connectant un réseau VPC à votre environnement et en le passant à une adresse IP privée. Pour en savoir plus sur la mise en réseau dans Airflow géré (3e génération), consultez la section Modifier le type de mise en réseau de l'environnement.
Le planificateur Airflow dans Airflow géré (3e génération) n'est compatible qu'avec les backends de messagerie personnalisés suivants :
- airflow.providers.sendgrid.utils.emailer.send_email
- airflow.utils.email.send_email_smtp
Si vous configurez un autre backend de messagerie personnalisé, cette configuration ne sera pas propagée au planificateur. Par conséquent, l'envoi d'e-mails directement à partir du planificateur entraînerait un blocage et un échec répété de ce dernier.
Les nœuds de calcul Airflow et les processeurs DAG sont compatibles avec d'autres backends personnalisés. Vous pouvez donc envoyer des e-mails à partir de ces composants. Un cas courant d'envoi d'e-mails directement à partir du planificateur est celui des alertes par e-mail concernant les échecs de DAG. Pour contourner ce problème, vous pouvez envoyer des alertes d'échec de DAG via un rappel enregistré au lieu de cela. Elles seront envoyées à partir du processeur DAG. Vous pouvez également utiliser d'autres backends personnalisés avec des opérateurs Airflow qui envoient des e-mails. Dans ce cas, l'e-mail sera envoyé à partir d'un nœud de calcul Airflow qui traite la tâche.
Configurer les services de messagerie SendGrid
Pour recevoir des notifications, configurez vos variables d'environnement pour l'envoi d'e-mails via le service de messagerie SendGrid.
S'inscrire à SendGrid
Si vous ne l'avez pas encore fait, inscrivez-vous à SendGrid dans la console Google Cloud , cliquez sur "Manage On Provider" (Gérer chez le fournisseur) pour accéder au domaine SendGrid, puis cliquez sur "Settings" (Paramètres) pour récupérer votre nom d'utilisateur et créer une clé API. En tant que Google Cloud développeur, vous pouvez commencer avec 12 000 e-mails sans frais par mois.
Accédez à l'API de messagerie SendGrid
Configurer des variables
SendGrid utilise la clé API et une adresse e-mail d'expéditeur pour envoyer des e-mails. Vous pouvez fournir ces informations à l'aide de l'une des options suivantes :
Stocker les valeurs dans Secret Manager
Pour stocker des valeurs dans Secret Manager :
Configurez Secret Manager pour votre environnement. Veillez à configurer les autorisations et les options de configuration Airflow pour le backend de secrets.
Remplacez les options de configuration Airflow suivantes :
Section Clé Valeur emailemail_conn_idsendgrid_defaultemailemail_backendairflow.providers.sendgrid.utils.emailer.send_emailCréez un secret pour la connexion SendGrid nommée
airflow-connections-sendgrid_default. Définissez la valeur du secret sur l'URI de connexion. Exemple :sendgrid://<username>:<sendgrid_api_key>@smtp.sendgrid.net:587Pour en savoir plus sur le stockage des connexions dans Secret Manager, consultez la section Gérer les connexions Airflow.
Configurez l'adresse e-mail pour SendGrid. Il n'est pas possible de configurer l'adresse e-mail via un secret. Remplacez plutôt l'option de configuration Airflow suivante :
Section Clé Valeur emailfrom_emailAdresse e-mail de l'expéditeur, telle que noreply@example.com.
Stocker les valeurs dans Airflow
Remplacez les options de configuration Airflow suivantes :
Section Clé Valeur emailemail_conn_idsendgrid_defaultemailemail_backendairflow.providers.sendgrid.utils.emailer.send_emailDans Airflow, configurez la connexion nommée
sendgrid_default. Spécifiez la clé API SendGrid dans l'URI de connexion. Exemple :gcloud composer environments run ENVIRONMENT_NAME \ --location LOCATION \ connections add -- \ --conn-uri "sendgrid://USERNAME:SENDGRID_API_KEY@smtp.sendgrid.net:587" \ sendgrid_defaultRemplacez les éléments suivants :
ENVIRONMENT_NAME: nom de votre environnementLOCATION: région où se trouve l'environnementUSERNAME: nom d'utilisateur SendGridSENDGRID_API_KEY: clé API SendGrid
Configurez l'adresse e-mail pour SendGrid. Il n'est pas possible de configurer l'adresse e-mail via un secret. Remplacez plutôt l'option de configuration Airflow suivante :
Section Clé Valeur emailfrom_emailAdresse e-mail de l'expéditeur, telle que noreply@example.com.
Tester votre configuration SendGrid
Pour tester la configuration SendGrid, procédez comme suit :
- Créez un DAG de test utilisant
EmailOperator. Exemple :
- Importez le DAG dans votre environnement et assurez-vous que la tâche est bien exécutée.
- Connectez-vous à SendGrid à l'aide de vos identifiants SendGrid.
- Dans l'interface utilisateur de SendGrid, accédez à la page "Activité".
- Cherchez l'e-mail dans la liste. Vous devriez constater que SendGrid a traité et envoyé l'e-mail.
Si l'e-mail n'est pas traité, ni distribué, effectuez les opérations suivantes :
- Vérifiez votre configuration SendGrid.
- Vérifiez que vous avez activé le backend Secret Manager. Assurez-vous d'avoir accordé des autorisations supplémentaires et défini des remplacements pour les options de configuration Airflow.
- Vérifiez le filtre antispam dans votre client de messagerie.
Configurer des services SMTP tiers
Pour envoyer un e-mail via un service SMTP tiers, remplacez l'option de configuration Airflow email_backend et configurez les autres paramètres SMTP.
Pour configurer un service SMTP tiers, remplacez les options de configuration Airflow suivantes :
| Section | Clé | Valeur |
|---|---|---|
email |
email_backend |
airflow.utils.email.send_email_smtp |
smtp |
smtp_host |
Nom d'hôte du serveur SMTP. |
smtp |
smtp_user |
Nom d'utilisateur sur le serveur SMTP. |
smtp |
smtp_port |
Port du serveur SMTP. Le port 25 n'est pas disponible. Vous pouvez utiliser d'autres ports, par exemple les ports SMTP standards 465 et 587. |
smtp |
smtp_password |
La définition d'un mot de passe via smtp_password n'est pas acceptée. Pour définir un mot de passe SMTP, suivez les instructions fournies dans l'article Configurer un mot de passe SMTP. |
smtp |
smtp_mail_from |
Adresse e-mail de l'expéditeur, telle que noreply-composer@. |
smtp |
smtp_starttls |
Pour plus de sécurité, définissez la valeur sur True. |
smtp |
smtp_ssl |
Pour plus de sécurité, définissez la valeur sur True. |
Configurer un mot de passe SMTP pour un service SMTP tiers
Conserver un mot de passe SMTP en texte brut dans le fichier de configuration Airflow constitue une mauvaise pratique de sécurité. C'est pourquoi Airflow géré n'est pas compatible avec cette méthode. Il est possible d'utiliser deux autres méthodes pour configurer un mot de passe SMTP.
Utiliser une commande pour récupérer le mot de passe SMTP
Vous pouvez utiliser un remplacement de configuration pour spécifier une commande qui obtient le mot de passe SMTP. Lors de la communication avec votre service SMTP, Airflow s'en sert pour obtenir la valeur du mot de passe. Spécifiez une seule commande, sans opérateurs Bash tels que des canaux et des redirections.
Pour utiliser cette méthode, remplacez l'option de configuration Airflow suivante :
| Section | Clé | Valeur |
|---|---|---|
smtp |
smtp_password_cmd |
Spécifiez une commande qui renvoie le mot de passe SMTP. |
Utiliser un secret stocké dans Secret Manager pour récupérer un mot de passe SMTP
Vous pouvez configurer Secret Manager en tant que backend de secrets Airflow.
Une fois que vous avez configuré Secret Manager pour votre environnement Composer, vous pouvez y stocker un mot de passe SMTP :
Créez un secret :
echo -n "SMTP_PASSWORD" | gcloud beta secrets create \ airflow-config-smtp-password \ --data-file=- \ --replication-policy=automaticRemplacez
SMTP_PASSWORDpar votre mot de passe SMTP.Configurez Airflow pour obtenir le mot de passe SMTP à partir de Secret Manager. Pour ce faire, remplacez l'option de configuration Airflow suivante :
Section Clé Valeur smtpsmtp_password_secretsmtp-password