Remarques :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction au niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeur pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. A la fin de l'exercice, remplacez ces valeurs par des valeurs propres à votre environnement cloud.
Intégrez OCI Email Delivery Service à OCI Functions, OCI Object Storage, OCI Vault et OCI Database avec PostgreSQL
Introduction
Les entreprises s'appuient sur une communication efficace par e-mail à diverses fins, notamment des notifications automatiques, des mises à jour d'applications et des campagnes marketing. Pour répondre à ces besoins, Oracle Cloud Infrastructure (OCI) offre un service de livraison de courriels robuste conçu pour fournir une solution gérée rapide et fiable pour l'envoi sécurisé de courriels transactionnels et marketing en grand nombre.
Ce tutoriel explique comment le service OCI Email Delivery est utilisé pour l'envoi de courriels rationalisé, intégré de manière transparente à OCI Functions, OCI Vault, OCI Object Storage et OCI Database avec PostgreSQL pour améliorer l'automatisation et la fiabilité des processus d'envoi de courriels. Il offre également une plate-forme flexible pour créer des solutions de distribution de courriels fiables. Le code fourni sert de point de départ aux développeurs pour créer des pipelines de distribution de courriels personnalisés en fonction de leurs besoins spécifiques.
Lorsqu'elle est appelée, la fonction créée à l'aide du service OCI Functions extrait un modèle de courriel à partir d'OCI Object Storage, se connecte à la base de données OCI avec la base de données PostgreSQL pour extraire les adresses électroniques des destinataires et envoie le courriel à tous ces destinataires.
Objectifs
-
Intégrez le service OCI Email Delivery à OCI Functions.
-
Utilisez OCI Vault pour une gestion sécurisée des informations d'identification et des informations sensibles.
-
Récupérez les adresses des destinataires à partir d'une base de données OCI avec la base de données PostgreSQL pour un envoi de courriels personnalisé.
-
Récupérez dynamiquement les modèles de courriel à partir d'OCI Object Storage pour obtenir du contenu personnalisable.
Prérequis
-
Accès à une location OCI et à des stratégies autorisées dans Oracle Cloud Infrastructure Identity and Access Management (OCI IAM).
-
Accès aux ressources OCI : services OCI Email Delivery, OCI Functions, OCI Vault, OCI Object Storage.
-
Bucket OCI Object Storage existant, OCI Vault, base de données OCI avec système de base de données PostgreSQL.
Tâche 1 : configurer le service OCI Email Delivery
Pour configurer le service OCI Email Delivery, reportez-vous aux instructions détaillées permettant d'envoyer des courriels avec OCI Email Delivery et à la vidéo : comment configurer Email Delivery dans OCI.
Une fois la configuration terminée, vous devez disposer d'au moins un expéditeur de courriel approuvé et des informations d'identification SMTP (Simple Mail Transfer Protocol) pour l'utilisateur OCI.
Tâche 2 : téléchargement du modèle de courriel dans le bucket OCI Object Storage
Téléchargez le modèle de courriel à partir d'ici : Modèle de courriel et téléchargez-le vers le bucket existant.
Tâche 3 : configurer des adresses de destinataire dans la base de données OCI avec la base de données PostgreSQL
-
Connectez-vous à la base de données OCI avec le système de base de données PostgreSQL. Pour plus d'informations, reportez-vous à Connexion à une base de données OCI avec PostgreSQL à l'aide de l'interface de ligne de commande PostgreSQL.
-
Créez une table pour les adresses électroniques des destinataires dans la base de données OCI avec la base de données PostgreSQL.
CREATE TABLE emails ( address VARCHAR(255) PRIMARY KEY );
-
Insérez des valeurs dans la table.
INSERT INTO emails (address) VALUES ('email1@example.com'), ('email2@example.com'), ('email3@example.com');
Tâche 4 : créer des clés secrètes dans OCI Vault
Créez des clés secrètes dans votre coffre pour les valeurs confidentielles que vous utiliserez, par exemple le nom utilisateur et le mot de passe SMTP (utilisés par le service OCI Email Delivery), la base de données OCI avec le nom utilisateur et le mot de passe de base de données PostgreSQL. Ces clés secrètes seront utilisées ultérieurement dans OCI Functions.
Tâche 5 : configurer OCI Functions
-
créer une fonction, Pour plus d'informations, reportez-vous à Fonctions : démarrage à l'aide de l'interface de ligne de commande.
Remarque : dans ce tutoriel, nous utilisons une fonction Python.
Dans ce tutoriel, l'application est nommée
email-delivery-function
et la fonction déployée est nomméeemail_function
. -
Après la configuration de la fonction de base d'origine, vous aurez les fichiers suivants dans votre dossier de fonctions.
func.py:
Pour placer le code de fonction Python personnalisé.func.yaml:
Données de configuration de la fonction.requirements.txt:
Répertorie les dépendances requises par le code de fonction.
-
Téléchargez le code de la fonction ici : script Python et remplacez le code dans le fichier
func.py
.Récapitulatif de la fonction du script
func.py
:-
Importe les bibliothèques nécessaires pour envoyer des courriels, utiliser les données JSON, accéder aux services OCI et interagir avec une base de données OCI avec la base de données PostgreSQL.
-
Définit les fonctions d'envoi de courriels (
sendEmail
) et de décodage des clés secrètes stockées dans OCI Vault (decodeSecret
). -
Définit une fonction de gestionnaire principale (
handler
) qui :-
Extrait les informations d'identification SMTP, l'hôte SMTP, le port SMTP et d'autres valeurs de configuration du contexte de fonction.
-
Extrait le contenu du modèle de courriel à partir d'OCI Object Storage.
-
Extrait les informations et l'objet de l'expéditeur de la charge utile JSON entrante.
-
Se connecte à une base de données OCI avec la base de données PostgreSQL à l'aide des informations d'identification obtenues à partir d'OCI Vault.
-
Exécute une requête pour extraire les adresses e-mail d'une table de la base de données.
-
Effectue une itération via les adresses électroniques extraites et envoie des courriels à l'aide de la fonction
sendEmail
. -
Renvoie un message de succès indiquant les adresses électroniques auxquelles les e-mails ont été envoyés.
-
Remarque :
-
Remplacez
host
dans le script par votre propre base de données OCI par l'adresse de système de base de données PostgreSQL située sous la base de données OCI par la section de connexion PostgreSQL. Vous pouvez également le configurer en tant qu'autre clé secrète dans OCI Vault ou l'extraire de la charge utile. -
Si vous voulez exécuter la fonction à partir d'un autre fichier qui n'est pas nommé
func.py
, placez ce fichier dans le dossier de la fonction et modifiez le fichierfunc.yaml
en conséquence.
-
-
Modifiez le fichier
requirements.txt
pour inclure les bibliothèques supplémentaires sur lesquelles repose le nouveau code Python :-
oci
: garantit que le kit SDK OCI est installé dans l'environnement d'exécution de la fonction lorsque celle-ci est déployée vers OCI Functions. -
psycopg2-binary
: autorise le code de fonction à se connecter à la base de données OCI et à la manipuler avec la base de données PostgreSQL.
$ cat requirements.txt fdk oci psycopg2-binary
-
-
Ajoutez la configuration suivante au contexte de la fonction. Remplacez l'identificateur Oracle Cloud (OCID) du coffre et l'adresse de la base de données OCI par l'adresse de système de base de données PostgreSQL.
fn config function email-delivery-function email_function db-host "..postgres_endpoint_IP.." fn config function email-delivery-function email_function vault-ocid "ocid1.vault.oc1.eu-frankfurt-1..." fn config function email-delivery-function email_function smtp-host "smtp.email.eu-frankfurt-1.oci.oraclecloud.com" fn config function email-delivery-function email_function smtp-port 587 fn config function email-delivery-function email_function smtp-password "xxxxxxxxxx" fn config function email-delivery-function email_function smtp-username "smtp_username" fn config function email-delivery-function email_function db-username "dbuser" fn config function email-delivery-function email_function db-password "xxxxxxxxxx"
-
Déployez la fonction.
Remarque : remplacez
email-delivery-function
par le nom de l'application.fn -v deploy --app email-delivery-function
-
Appelez la fonction. La fonction attend une charge utile qui doit inclure :
sender-email
: expéditeur approuvé du service OCI Email Delivery.sender-name
: nom de l'expéditeur, tel qu'affiché au destinataire.subject
: objet du courriel.
Si nécessaire, remplacez le nom d'application et le nom de fonction.
echo '{ "sender-email":"...approved_sender_address...", "sender-name":"Company Test", "subject":"test email" }' | fn invoke email-delivery-function email_function
L'appel de la fonction doit renvoyer le message suivant :
Email successfully sent to ['email1@example.com', 'email2@example.com', 'email3@example.com']!
Liens connexes
Remerciements
- Auteur - Adina Nicolescu (ingénieur cloud senior)
Ressources de formation supplémentaires
Parcourez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, rendez-vous sur education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.
Integrate OCI Email Delivery Service with OCI Functions, OCI Object Storage, OCI Vault, and OCI Database with PostgreSQL
F96464-01
April 2024