Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
Cette page explique comment configurer des services SMTP pour votre environnement Cloud Composer.
Avant de commencer
Si votre environnement Cloud Composer 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).
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 avec SendGrid
Si vous ne l'avez pas déjà fait, inscrivez-vous avec SendGrid dans la console Google Cloud, cliquez sur "Gérer sur le fournisseur" pour accéder au domaine SendGrid, puis cliquez sur "Paramètres" pour récupérer votre nom d'utilisateur et créer une clé API. En tant que développeur Google Cloud, vous pouvez démarrer avec 12 000 e-mails gratuits par mois.
Accédez à l'API de messagerie SendGrid
Configurer des variables
SendGrid utilise la clé API et une adresse e-mail de l'expéditeur pour envoyer des e-mails. Toi pouvez fournir ces informations de l'une des façons suivantes:
(Recommandé) Stockez les valeurs dans Secret Manager.
Stocker des valeurs dans Airflow
Stocker des valeurs dans Secret Manager
Pour stocker des valeurs dans Secret Manager:
Configurez Secret Manager pour votre environnement. Veillez à définir les autorisations et les options de configuration Airflow pour backend de secrets.
Ignorez les options de configuration Airflow suivantes :
Section Clé Valeur email
email_conn_id
sendgrid_default
email
email_backend
airflow.providers.sendgrid.utils.emailer.send_email
Créez un secret pour la connexion SendGrid nommé
airflow-connections-sendgrid_default
Définissez la valeur du secret sur l'URI de connexion. Exemple :sendgrid://<username>:<sendgrid_api_key>@smtp.sendgrid.net:587
Pour 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 :
(Airflow 2.2.4 et versions ultérieures) Il n'est pas possible de configurer l'adresse e-mail via un secret. À la place, remplacez l'option de configuration Airflow suivante :
Section Clé Valeur email
from_email
Adresse e-mail de l'expéditeur, telle que noreply@example.com
.(versions Airflow 2.1.4 à 2.1.3) Définissez la variable d'environnement suivante pour votre environnement:
Nom Valeur SENDGRID_MAIL_FROM
Adresse e-mail de l'expéditeur, telle que noreply@example.com
.
Stocker des valeurs dans Airflow
Ignorez les options de configuration Airflow suivantes :
Section Clé Valeur email
email_conn_id
sendgrid_default
email
email_backend
airflow.providers.sendgrid.utils.emailer.send_email
Dans Airflow, configurez la connexion nommée
sendgrid_default
. Spécifier la clé API Sendgrid dans la connexion URI. Exemple :gcloud composer environments run ENVIRONMENT_NAME \ --location LOCATION \ connections add -- \ --conn-uri "sendgrid://USERNAME:SENDGRID_API_KEY@smtp.sendgrid.net:587" \ sendgrid_default
Remplacez les éléments suivants :
ENVIRONMENT_NAME
: nom de votre environnementLOCATION
: région où se trouve l'environnement.USERNAME
: nom d'utilisateur SendGrid.SENDGRID_API_KEY
: clé API SendGrid.
Configurez l'adresse e-mail pour SendGrid :
(Airflow 2.2.4 et versions ultérieures) Remplacez l'option de configuration Airflow suivante :
Section Clé Valeur email
from_email
Adresse e-mail de l'expéditeur, telle que noreply@example.com
.(versions Airflow 2.1.4 à 2.1.3) Définissez la variable d'environnement suivante pour votre environnement:
Nom Valeur SENDGRID_MAIL_FROM
L'adresse 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 vérifiez 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 envoi de données a été traité. et distribué 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 de Secret Manager. Assurez-vous d'avoir accordé des autorisations supplémentaires et de définir des forçages 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 |
L'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 Cloud Composer 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 un 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 les opérateurs bash tels que les pipes et les redirections.
Pour utiliser cette méthode, remplacez l'extrait Airflow suivant : l'une des options suivantes:
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 comme Backend des 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=automatic
Remplacez
SMTP_PASSWORD
par 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 smtp
smtp_password_secret
smtp-password