주:
- 이 사용지침서에서는 Oracle Cloud에 액세스해야 합니다. 무료 계정에 등록하려면 Oracle Cloud Infrastructure Free Tier 시작하기를 참조하십시오.
- Oracle Cloud Infrastructure 인증서, 테넌시 및 구획에 대한 예제 값을 사용합니다. 실습을 마칠 때는 이러한 값을 클라우드 환경과 관련된 값으로 대체하십시오.
OCI Email Delivery Service와 OCI Functions, OCI Object Storage, OCI Vault 및 OCI Database를 PostgreSQL와 통합
소개
기업은 자동 알림, 애플리케이션 업데이트, 마케팅 캠페인 등 다양한 목적으로 효과적인 이메일 커뮤니케이션을 활용합니다. 이러한 요구를 충족하기 위해 Oracle Cloud Infrastructure(OCI)는 안전한 대용량 마케팅 및 트랜잭션 이메일을 전송할 수 있는 빠르고 안정적인 관리 솔루션을 제공하도록 설계된 강력한 이메일 딜리버리 서비스를 제공합니다.
이 사용지침서에서는 간소화된 이메일 전송을 위해 OCI 이메일 딜리버리 서비스가 어떻게 사용되는지, OCI Functions, OCI Vault, OCI Object Storage 및 OCI Database와 PostgreSQL의 원활하게 통합되어 이메일 디스패치 프로세스의 자동화 및 안정성을 개선하고, 신뢰할 수 있는 이메일 딜리버리 솔루션을 생성할 수 있는 유연한 플랫폼을 제공하는지 보여줍니다. 제공된 코드는 개발자가 특정 요구 사항에 따라 맞춤형 이메일 전송 파이프라인을 구축할 수 있는 출발점 역할을 합니다.
호출 시 OCI Functions 서비스를 사용하여 생성된 함수는 OCI Object Storage에서 전자메일 템플리트를 검색하고, PostgreSQL 데이터베이스를 사용하여 OCI 데이터베이스에 접속하여 수신자 전자메일 주소를 검색하고, 해당 모든 수신자에게 전자메일을 전송합니다.
목표
-
OCI Email Delivery 서비스를 OCI Functions와 통합합니다.
-
OCI Vault를 활용하여 자격 증명 및 민감한 정보를 안전하게 관리합니다.
-
개인화된 이메일 발송을 위해 PostgreSQL 데이터베이스를 사용하여 OCI 데이터베이스에서 수신자 주소를 검색합니다.
-
커스터마이징 가능한 콘텐츠를 위해 OCI Object Storage에서 동적으로 이메일 템플리트를 검색합니다.
필요 조건
-
OCI IAM(Oracle Cloud Infrastructure Identity and Access Management)에서 허용되는 OCI 테넌시 및 정책에 액세스합니다.
-
OCI 리소스에 대한 액세스 - OCI Email Delivery, OCI Functions, OCI Vault, OCI Object Storage 서비스.
-
기존 OCI Object Storage 버킷, OCI Vault, PostgreSQL 데이터베이스 시스템이 포함된 OCI Database.
작업 1: OCI 전자메일 전송 서비스 설정
OCI 전자메일 전송 서비스를 구성하려면 OCI 전자메일 전송으로 전자메일을 전송하는 단계별 지침 및 비디오: OCI에서 전자메일 전송 구성 방법을 참조하십시오.
구성을 완료한 후에는 OCI 사용자에 대해 승인된 전자메일 발신자 및 SMTP(Simple Mail Transfer Protocol) 인증서가 하나 이상 있어야 합니다.
작업 2: OCI 오브젝트 스토리지 버킷에서 전자메일 템플리트 업로드
전자메일 템플리트를 여기에서 다운로드하여 기존 버킷에 업로드합니다.
작업 3: PostgreSQL 데이터베이스를 사용하여 OCI 데이터베이스에서 수신자 주소 설정
-
PostgreSQL 데이터베이스 시스템을 사용하여 OCI 데이터베이스에 연결합니다. 자세한 내용은 PostgreSQL CLI를 사용하여 PostgreSQL OCI 데이터베이스에 연결을 참조하십시오.
-
PostgreSQL 데이터베이스를 사용하여 OCI 데이터베이스에서 수신자 전자메일 주소에 대한 테이블을 생성합니다.
CREATE TABLE emails ( address VARCHAR(255) PRIMARY KEY );
-
테이블에 값을 삽입합니다.
INSERT INTO emails (address) VALUES ('email1@example.com'), ('email2@example.com'), ('email3@example.com');
작업 4: OCI 저장소에 암호 생성
사용할 민감한 값에 대한 암호(예: SMTP 사용자 이름 및 비밀번호(OCI Email Delivery 서비스에서 사용), OCI 데이터베이스(PostgreSQL 데이터베이스 사용자 이름 및 비밀번호 포함)를 저장소에 생성합니다. 이 암호는 나중에 OCI 함수에서 사용됩니다.
작업 5: OCI 함수 설정
-
함수 생성. 자세한 내용은 함수: CLI를 사용하여 시작하기를 참조하십시오.
주: 이 자습서에서는 Python 함수를 사용합니다.
이 자습서에서는 응용 프로그램의 이름이
email-delivery-function
이고 배치된 함수의 이름이email_function
입니다. -
원래 기본 함수가 설정된 후 함수 폴더에 다음 파일이 있습니다.
func.py:
사용자정의 Python 함수 코드를 배치합니다.func.yaml:
함수에 대한 구성 데이터입니다.requirements.txt:
함수 코드에 필요한 종속성을 나열합니다.
-
여기에서 함수 코드를 다운로드합니다. Python script와
func.py
파일의 코드를 대체합니다.func.py
스크립트의 작업 요약:-
전자메일 전송, JSON 데이터 작업, OCI 서비스 액세스, PostgreSQL 데이터베이스와 OCI 데이터베이스와의 상호 작용에 필요한 라이브러리를 임포트합니다.
-
전자메일 전송(
sendEmail
) 및 OCI 저장소(decodeSecret
)에 저장된 암호 디코딩 기능을 정의합니다. -
다음과 같은 기본 처리기 함수(
handler
)를 정의합니다.-
기능 컨텍스트에서 SMTP 자격 증명, SMTP 호스트, SMTP 포트 및 기타 구성 값을 검색합니다.
-
OCI Object Storage에서 전자메일 템플리트 콘텐츠를 검색합니다.
-
수신 JSON 페이로드에서 발신자 정보 및 제목을 검색합니다.
-
OCI Vault에서 가져온 인증서를 사용하여 PostgreSQL 데이터베이스로 OCI 데이터베이스에 접속합니다.
-
데이터베이스의 테이블에서 전자 메일 주소를 검색하는 질의를 실행합니다.
-
검색된 전자 메일 주소를 반복하고
sendEmail
함수를 사용하여 전자 메일을 보냅니다. -
전자메일이 전송된 전자메일 주소를 나타내는 성공 메시지를 반환합니다.
-
참고:
-
스크립트의
host
를 고유 OCI 데이터베이스로 OCI 데이터베이스 아래에 있는 PostgreSQL 데이터베이스 시스템 끝점으로 바꾸고 PostgreSQL 접속 섹션을 사용합니다. 또한 OCI Vault에서 암호를 다른 암호로 설정하거나 페이로드에서 가져올 수 있습니다. -
func.py
로 이름이 지정되지 않은 다른 파일에서 함수를 실행하려면 해당 파일을 함수 폴더에 배치하고 그에 따라func.yaml
파일을 편집합니다.
-
-
새 Python 코드가 사용하는 추가 라이브러리가 포함되도록
requirements.txt
파일을 편집합니다.-
oci
: 함수가 OCI 함수에 배포될 때 OCI SDK(소프트웨어 개발 키트)가 함수의 런타임 환경에 설치되도록 합니다. -
psycopg2-binary
: 함수 코드가 PostgreSQL 데이터베이스를 사용하여 OCI 데이터베이스에 접속하고 조작할 수 있도록 허용합니다.
$ cat requirements.txt fdk oci psycopg2-binary
-
-
다음 구성을 함수 컨텍스트에 추가합니다. 저장소의 OCID(Oracle Cloud 식별자) 및 OCI 데이터베이스 주소를 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"
-
함수를 배치합니다.
주:
email-delivery-function
를 애플리케이션 이름으로 바꾸십시오.fn -v deploy --app email-delivery-function
-
함수를 호출합니다. 함수에는 다음과 같은 페이로드가 필요합니다.
sender-email
: OCI 전자메일 전송 서비스에서 승인된 발신자입니다.sender-name
: 수신자에게 표시되는 발신자의 이름입니다.subject
: 전자메일의 제목입니다.
필요한 경우 응용 프로그램 이름과 함수 이름을 바꿉니다.
echo '{ "sender-email":"...approved_sender_address...", "sender-name":"Company Test", "subject":"test email" }' | fn invoke email-delivery-function email_function
함수 호출은 다음 메시지를 반환해야 합니다.
Email successfully sent to ['email1@example.com', 'email2@example.com', 'email3@example.com']!
관련 링크
확인
- 작성자 - Adina Nicolescu(수석 클라우드 엔지니어)
추가 학습 자원
docs.oracle.com/learn에서 다른 실습을 살펴보거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하십시오. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Integrate OCI Email Delivery Service with OCI Functions, OCI Object Storage, OCI Vault, and OCI Database with PostgreSQL
F96467-01
April 2024