Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se cadastrar em uma conta gratuita, consulte Conceitos básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Integre o OCI Email Delivery Service com o OCI Functions, OCI Object Storage, OCI Vault e OCI Database com PostgreSQL
Introdução
As empresas dependem de uma comunicação por email eficaz para vários fins, incluindo notificações automáticas, atualizações de aplicativos e campanhas de marketing. Para atender a essas necessidades, a Oracle Cloud Infrastructure (OCI) oferece um serviço robusto de Entrega de E-mail projetado para fornecer uma solução gerenciada rápida e confiável para enviar e-mails transacionais e de marketing seguros e de alto volume.
Este tutorial ilustra como o serviço OCI Email Delivery é empregado para envio de e-mail simplificado, perfeitamente integrado ao OCI Functions, OCI Vault, OCI Object Storage e OCI Database com PostgreSQL para melhorar a automação e a confiabilidade nos processos de envio de e-mail e também oferece uma plataforma flexível para criar soluções de entrega de e-mail confiáveis. O código fornecido serve como ponto de partida para que os desenvolvedores criem pipelines de entrega de email personalizados de acordo com suas necessidades específicas.
Quando chamada, a função criada usando o serviço OCI Functions recuperará um modelo de e-mail do OCI Object Storage, estabelecerá conexão com o OCI Database com o banco de dados PostgreSQL para recuperar endereços de e-mail do destinatário e enviará o e-mail a todos esses destinatários.
Objetivos
-
Integrar o serviço OCI Email Delivery ao OCI Functions.
-
Utilize o OCI Vault para gerenciamento seguro de credenciais e informações confidenciais.
-
Recupere endereços de destinatários de um Banco de Dados do OCI com banco de dados PostgreSQL para despacho de e-mail personalizado.
-
Recupere modelos de e-mail dinamicamente do OCI Object Storage para conteúdo personalizável.
Pré-requisitos
-
Acesso a uma tenancy e políticas do OCI permitidas no Oracle Cloud Infrastructure Identity and Access Management (OCI IAM).
-
Acesso aos recursos do OCI - OCI Email Delivery, OCI Functions, OCI Vault, serviços OCI Object Storage.
-
Bucket existente do OCI Object Storage, OCI Vault, OCI Database com sistema de banco de dados PostgreSQL.
Tarefa 1: Configurar o Serviço OCI Email Delivery
Para configurar o serviço OCI Email Delivery, consulte Instruções passo a passo para enviar e-mail com o OCI Email Delivery e Vídeo: Como configurar o Email Delivery no OCI.
Após concluir a configuração, você deverá ter pelo menos um remetente de e-mail aprovado e credenciais SMTP (Simple Mail Transfer Protocol) para seu usuário do OCI.
Tarefa 2: Fazer Upload do Modelo de E-mail no Bucket do OCI Object Storage
Faça download do modelo de e-mail aqui: Modelo de e-mail e faça upload dele para o bucket existente.
Tarefa 3: Configurar Endereços de Destinatários no OCI Database com o Banco de Dados PostgreSQL
-
Conecte-se ao OCI Database com o sistema de banco de dados PostgreSQL. Para obter mais informações, consulte Estabelecendo Conexão com um Banco de Dados do OCI com PostgreSQL com a CLI PostgreSQL.
-
Crie uma tabela para os endereços de e-mail do destinatário no OCI Database com o banco de dados PostgreSQL.
CREATE TABLE emails ( address VARCHAR(255) PRIMARY KEY );
-
Insira os valores na tabela.
INSERT INTO emails (address) VALUES ('email1@example.com'), ('email2@example.com'), ('email3@example.com');
Tarefa 4: Criar Segredo(s) no OCI Vault
Crie segredos em seu vault para os valores confidenciais que você usará, por exemplo, o nome de usuário e a senha SMTP (usados pelo serviço OCI Email Delivery), o OCI Database com nome de usuário e senha do banco de dados PostgreSQL. Esses segredos serão usados posteriormente no OCI Functions.
Tarefa 5: Configurar Funções do OCI
-
Crie uma função. Para obter mais informações, consulte Funções: Conceitos Básicos do uso da CLI.
Observação: Neste tutorial, usamos uma função Python.
Neste tutorial, o aplicativo é chamado de
email-delivery-function
e a função implantada é chamada deemail_function
. -
Após a configuração da função básica original, você terá os seguintes arquivos em sua pasta de funções.
func.py:
Para colocar o código de função Python personalizado.func.yaml:
Dados de configuração da sua função.requirements.txt:
Lista as dependências exigidas pelo código da função.
-
Faça download do código de função aqui: script Python e substitua o código no arquivo
func.py
.Resumo do que o script
func.py
faz:-
Importa as bibliotecas necessárias para enviar e-mails, trabalhar com dados JSON, acessar serviços do OCI e interagir com um OCI Database com banco de dados PostgreSQL.
-
Define funções para enviar e-mails (
sendEmail
) e decodificar segredos armazenados no OCI Vault (decodeSecret
). -
Define uma função de handler principal (
handler
) que:-
Recupera credenciais SMTP, host SMTP, porta SMTP e outros valores de configuração do contexto da função.
-
Recupera o conteúdo do modelo de e-mail do OCI Object Storage.
-
Recupera informações do remetente e assunto do payload JSON de entrada.
-
Estabelece conexão com um Banco de Dados do OCI com o banco de dados PostgreSQL usando credenciais obtidas do OCI Vault.
-
Executa uma consulta para recuperar endereços de e-mail de uma tabela no banco de dados.
-
Repete-se pelos endereços de e-mail recuperados e envia e-mails usando a função
sendEmail
. -
Retorna uma mensagem de sucesso indicando os endereços de e-mail para os quais os e-mails foram enviados.
-
Observação:
-
Substitua o
host
no script pelo seu próprio OCI Database pelo ponto final do sistema de banco de dados PostgreSQL localizado na seção OCI Database pela seção de conexão PostgreSQL. Você também pode configurá-lo como outro segredo no Vault do OCI ou extraí-lo do payload. -
Se você quiser executar a função de outro arquivo que não seja nomeado como
func.py
, coloque esse arquivo na pasta da função e edite o arquivofunc.yaml
adequadamente.
-
-
Edite o arquivo
requirements.txt
para incluir as bibliotecas extras nas quais o novo código Python se baseia:-
oci
: Garante que o SDK (Software Development Kit) do OCI esteja instalado no ambiente de runtime da função quando a função for implantada no OCI Functions. -
psycopg2-binary
: Permite que o código de função estabeleça conexão e manipule o OCI Database com o banco de dados PostgreSQL.
$ cat requirements.txt fdk oci psycopg2-binary
-
-
Adicione a configuração a seguir ao contexto da função. Substitua o OCID (Oracle Cloud Identifier) do vault e o endereço do OCI Database pelo ponto final do sistema de banco de dados 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"
-
Implante a função.
Observação: Substitua
email-delivery-function
pelo nome do seu aplicativo.fn -v deploy --app email-delivery-function
-
Chame a função. A função espera um payload que deve incluir:
sender-email
: O remetente aprovado do serviço OCI Email Delivery.sender-name
: O nome do remetente, conforme exibido para o destinatário.subject
: Assunto do e-mail.
Se necessário, substitua o nome do aplicativo e o nome da função.
echo '{ "sender-email":"...approved_sender_address...", "sender-name":"Company Test", "subject":"test email" }' | fn invoke email-delivery-function email_function
A chamada de função deve retornar a mensagem:
Email successfully sent to ['email1@example.com', 'email2@example.com', 'email3@example.com']!
Links Relacionados
Confirmação
- Autor - Adina Nicolescu (Engenheira Sênior de Nuvem)
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Integrate OCI Email Delivery Service with OCI Functions, OCI Object Storage, OCI Vault, and OCI Database with PostgreSQL
F96468-01
April 2024