Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zum Registrieren eines kostenlosen Accounts finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Wenn Sie Ihre Übung abgeschlossen haben, ersetzen Sie diese Werte durch spezifische Werte für Ihre Cloud-Umgebung.
OCI Email Delivery Service mit OCI Functions, OCI Object Storage, OCI Vault und OCI Database mit PostgreSQL integrieren
Einführung
Unternehmen verlassen sich für verschiedene Zwecke auf eine effektive E-Mail-Kommunikation, einschließlich automatischer Benachrichtigungen, Anwendungsaktualisierungen und Marketingkampagnen. Um diese Anforderungen zu erfüllen, bietet Oracle Cloud Infrastructure (OCI) einen robusten Email Delivery-Service, der eine schnelle und zuverlässige verwaltete Lösung zum Senden sicherer, umfangreicher Marketing- und Transaktions-E-Mails bietet.
Dieses Tutorial veranschaulicht, wie der OCI Email Delivery-Service für optimiertes E-Mail-Senden verwendet wird und nahtlos in OCI Functions, OCI Vault, OCI Object Storage und OCI Database mit PostgreSQL integriert wird, um die Automatisierung und Zuverlässigkeit bei E-Mail-Versandprozessen zu verbessern. Außerdem bietet es eine flexible Plattform für die Erstellung zuverlässiger E-Mail-Versandlösungen. Der bereitgestellte Code dient als Ausgangspunkt für Entwickler, um benutzerdefinierte E-Mail-Zustellungspipelines entsprechend ihren spezifischen Anforderungen zu erstellen.
Wenn die Funktion aufgerufen wird, die mit dem OCI Functions-Service erstellt wurde, ruft eine E-Mail-Vorlage aus OCI Object Storage ab, stellt eine Verbindung zur OCI-Datenbank mit der PostgreSQL-Datenbank her, um Empfänger-E-Mail-Adressen abzurufen, und sendet die E-Mail an alle diese Empfänger.
Ziele
-
Integrieren Sie den OCI Email Delivery-Service in OCI Functions.
-
Mit OCI Vault können Sie Zugangsdaten und sensible Informationen sicher verwalten.
-
Rufen Sie Empfängeradressen aus einer OCI-Datenbank mit der PostgreSQL-Datenbank für den personalisierten E-Mail-Versand ab.
-
Rufen Sie E-Mail-Vorlagen dynamisch aus OCI Object Storage ab, um anpassbaren Inhalt zu erhalten.
Voraussetzungen
-
Zugriff auf einen OCI-Mandanten und in Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) zulässige Policys.
-
Zugriff auf OCI-Ressourcen - OCI Email Delivery, OCI Functions, OCI Vault, OCI Object Storage-Services.
-
Vorhandener OCI Object Storage-Bucket, OCI Vault, OCI Database mit dem Datenbanksystem PostgreSQL.
Aufgabe 1: OCI Email Delivery-Service einrichten
Informationen zum Konfigurieren des OCI Email Delivery-Service finden Sie unter Schritt-für-Schritt-Anweisungen zum Senden von E-Mails mit OCI Email Delivery und Video: So konfigurieren Sie Email Delivery in OCI.
Nach Abschluss der Konfiguration benötigen Sie mindestens einen genehmigten E-Mail-Absender und SMTP-(Simple Mail Transfer Protocol-)Zugangsdaten für Ihren OCI-Benutzer.
Aufgabe 2: E-Mail-Vorlage in OCI Object Storage-Bucket hochladen
Laden Sie die E-Mail-Vorlage von hier herunter: E-Mail-Vorlage, und laden Sie sie in den vorhandenen Bucket hoch.
Aufgabe 3: Empfängeradressen in OCI-Datenbank mit der Datenbank PostgreSQL einrichten
-
Stellen Sie mit dem Datenbanksystem PostgreSQL eine Verbindung zur OCI-Datenbank her. Weitere Informationen finden Sie unter Verbindung zu einer OCI-Datenbank mit PostgreSQL mit der PostgreSQL-CLI herstellen.
-
Erstellen Sie eine Tabelle für die Empfänger-E-Mail-Adressen in der OCI-Datenbank mit der Datenbank PostgreSQL.
CREATE TABLE emails ( address VARCHAR(255) PRIMARY KEY );
-
Fügen Sie Werte in die Tabelle ein.
INSERT INTO emails (address) VALUES ('email1@example.com'), ('email2@example.com'), ('email3@example.com');
Aufgabe 4: Secret(s) in OCI Vault erstellen
Erstellen Sie Secrets in Ihrem Vault für die sensiblen Werte, die Sie verwenden, z.B. den SMTP-Benutzernamen und das SMTP-Kennwort (wird vom OCI Email Delivery-Service verwendet), die OCI-Datenbank mit dem Benutzernamen und Kennwort der Datenbank PostgreSQL. Diese Secrets werden später in OCI Functions verwendet.
Aufgabe 5: OCI-Funktionen einrichten
-
Funktion erstellen. Weitere Informationen finden Sie unter Funktionen: Erste Schritte mit der CLI.
Hinweis: In diesem Tutorial wird eine Python-Funktion verwendet.
In diesem Tutorial heißt die Anwendung
email-delivery-function
, und die bereitgestellte Funktion heißtemail_function
. -
Nach dem Einrichten der ursprünglichen Basisfunktion haben Sie die folgenden Dateien in Ihrem Funktionsordner.
func.py:
Zum Platzieren des benutzerdefinierten Python-Funktionscodes.func.yaml:
Konfigurationsdaten für Ihre Funktion.requirements.txt:
Listet Abhängigkeiten auf, die für den Funktionscode erforderlich sind.
-
Laden Sie den Funktionscode von hier herunter: Python-Skript, und ersetzen Sie den Code in der Datei
func.py
.Zusammenfassung der Vorgänge im Skript
func.py
:-
Importiert die erforderlichen Librarys für das Senden von E-Mails, das Arbeiten mit JSON-Daten, den Zugriff auf OCI-Services und die Interaktion mit einer OCI-Datenbank mit der PostgreSQL-Datenbank.
-
Definiert Funktionen zum Senden von E-Mails (
sendEmail
) und Dekodieren von Secrets, die in OCI Vault (decodeSecret
) gespeichert sind. -
Definiert eine Haupt-Handler-Funktion (
handler
), die:-
Ruft SMTP-Zugangsdaten, SMTP-Host, SMTP-Port und andere Konfigurationswerte aus dem Funktionskontext ab.
-
Ruft den E-Mail-Vorlageninhalt aus OCI Object Storage ab.
-
Ruft Absenderinformationen und Betreff aus der eingehenden JSON-Payload ab.
-
Stellt mit Zugangsdaten aus OCI Vault eine Verbindung zu einer OCI-Datenbank mit der PostgreSQL-Datenbank her.
-
Führt eine Abfrage aus, um E-Mail-Adressen aus einer Tabelle in der Datenbank abzurufen.
-
Iteriert die abgerufenen E-Mail-Adressen und sendet E-Mails mit der Funktion
sendEmail
. -
Gibt eine Erfolgsmeldung zurück, in der die E-Mail-Adressen angegeben sind, an die E-Mails gesendet wurden.
-
Hinweis:
-
Ersetzen Sie
host
im Skript durch Ihre eigene OCI-Datenbank durch den Datenbanksystemendpunkt PostgreSQL, der sich unter der OCI-Datenbank befindet, durch den Verbindungsabschnitt PostgreSQL. Sie können es auch als ein anderes Secret im OCI Vault einrichten oder aus der Payload übernehmen. -
Wenn Sie die Funktion aus einer anderen Datei ausführen möchten, die nicht als
func.py
benannt ist, speichern Sie diese Datei im Ordner der Funktion, und bearbeiten Sie die Dateifunc.yaml
entsprechend.
-
-
Bearbeiten Sie die Datei
requirements.txt
so, dass sie die zusätzlichen Librarys enthält, auf denen der neue Python-Code basiert:-
oci
: Stellt sicher, dass das OCI Software Development Kit (SDK) in der Laufzeitumgebung der Funktion installiert wird, wenn die Funktion in OCI Functions bereitgestellt wird. -
psycopg2-binary
: Ermöglicht dem Funktionscode die Verbindung zur OCI-Datenbank und deren Bearbeitung mit der PostgreSQL-Datenbank.
$ cat requirements.txt fdk oci psycopg2-binary
-
-
Fügen Sie dem Funktionskontext die folgende Konfiguration hinzu. Ersetzen Sie die Oracle Cloud-ID (OCID) des Vaults und die Adresse der OCI-Datenbank durch den Datenbanksystemendpunkt 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"
-
Stellen Sie die Funktion bereit.
Hinweis: Ersetzen Sie
email-delivery-function
durch den Namen der Anwendung.fn -v deploy --app email-delivery-function
-
Rufen Sie die Funktion auf. Die Funktion erwartet eine Payload, die Folgendes umfassen sollte:
sender-email
: Der genehmigte Absender aus dem OCI Email Delivery-Service.sender-name
: Der Name des Absenders, wie er dem Empfänger angezeigt wird.subject
: Betreff der E-Mail.
Ersetzen Sie bei Bedarf den Anwendungsnamen und den Funktionsnamen.
echo '{ "sender-email":"...approved_sender_address...", "sender-name":"Company Test", "subject":"test email" }' | fn invoke email-delivery-function email_function
Der Funktionsaufruf sollte die Meldung zurückgeben:
Email successfully sent to ['email1@example.com', 'email2@example.com', 'email3@example.com']!
Verwandte Links
Danksagungen
- Autor - Adina Nicolescu (Senior Cloud Engineer)
Weitere Lernressourcen
Lernen Sie andere Übungen auf docs.oracle.com/learn kennen, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube Channel zu. Außerdem können Sie education.oracle.com/learning-explorer besuchen, um Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Integrate OCI Email Delivery Service with OCI Functions, OCI Object Storage, OCI Vault, and OCI Database with PostgreSQL
F96461-01
April 2024