Mengonfigurasi notifikasi email

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

Halaman ini menjelaskan cara mengonfigurasi layanan SMTP untuk lingkungan Cloud Composer.

Sebelum memulai

Jika lingkungan Cloud Composer Anda dikonfigurasi untuk IP Pribadi, pastikan memiliki konektivitas ke endpoint API untuk layanan email eksternal Anda (seperti https://api.sendgrid.com, atau server SMTP pilihan Anda).

Mengonfigurasi layanan email SendGrid

Untuk menerima notifikasi, konfigurasi variabel lingkungan Anda untuk mengirim email melalui layanan email SendGrid.

Mendaftar di SendGrid

Jika belum melakukannya, daftar ke SendGrid di konsol Google Cloud, klik Manage On Provider untuk membuka domain SendGrid, lalu klik Settings untuk mengambil nama pengguna Anda dan membuat kunci API. Sebagai developer Google Cloud, Anda dapat memulai dengan 12.000 email gratis per bulan.

Buka SendGrid Email API

Mengonfigurasi variabel

SendGrid menggunakan kunci API dan alamat email Dari untuk mengirim email. Anda dapat memberikan informasi ini dengan salah satu opsi berikut:

  • (Direkomendasikan) Simpan nilai di Secret Manager.

  • Simpan nilai di Airflow.

Menyimpan nilai di Secret Manager

Untuk menyimpan nilai di Secret Manager:

  1. Konfigurasi Secret Manager untuk lingkungan Anda. Pastikan Anda menyiapkan izin dan opsi konfigurasi Airflow untuk backend secrets.

  2. Ganti opsi konfigurasi Airflow berikut:

    Bagian Kunci Nilai
    email email_conn_id sendgrid_default
    email email_backend airflow.providers.sendgrid.utils.emailer.send_email
  3. Buat rahasia untuk koneksi SendGrid bernama airflow-connections-sendgrid_default. Tetapkan nilai secret ke URI koneksi. Contoh:

    sendgrid://<username>:<sendgrid_api_key>@smtp.sendgrid.net:587
    

    Untuk informasi selengkapnya tentang cara menyimpan koneksi di Secret Manager, lihat Kelola koneksi Airflow.

  4. Konfigurasikan alamat email untuk SendGrid:

    • (Airflow 2.2.4 dan versi yang lebih baru) Anda tidak dapat menyiapkan alamat email Anda secara rahasia. Sebagai gantinya, ganti opsi konfigurasi Airflow berikut:

      Bagian Kunci Nilai
      email from_email Alamat email Dari, seperti noreply@example.com.
    • (Airflow versi 2.1.4 hingga 2.1.3) Tetapkan variabel lingkungan berikut untuk lingkungan:

      Nama Nilai
      SENDGRID_MAIL_FROM Alamat email Dari, seperti noreply@example.com.

Menyimpan nilai di Airflow

  1. Ganti opsi konfigurasi Airflow berikut:

    Bagian Kunci Nilai
    email email_conn_id sendgrid_default
    email email_backend airflow.providers.sendgrid.utils.emailer.send_email
  2. Di Airflow, konfigurasi koneksi bernama sendgrid_default. Menetapkan kunci API Sendgrid dalam koneksi URI. Contoh:

    gcloud composer environments run ENVIRONMENT_NAME \
      --location LOCATION \
      connections add -- \
      --conn-uri "sendgrid://USERNAME:SENDGRID_API_KEY@smtp.sendgrid.net:587" \
      sendgrid_default
    

    Ganti kode berikut:

    • ENVIRONMENT_NAME: nama lingkungan Anda.
    • LOCATION: wilayah tempat lingkungan berada.
    • USERNAME: nama pengguna SendGrid.
    • SENDGRID_API_KEY: kunci SendGrid API.
  3. Konfigurasikan alamat email untuk SendGrid:

    • (Airflow 2.2.4 dan versi yang lebih baru) Mengganti opsi konfigurasi Airflow berikut:

      Bagian Kunci Nilai
      email from_email Alamat email Dari, seperti noreply@example.com.
    • (Airflow versi 2.1.4 hingga 2.1.3) Tetapkan variabel lingkungan berikut untuk lingkungan:

      Nama Nilai
      SENDGRID_MAIL_FROM Alamat email Dari, seperti noreply@example.com.

Menguji konfigurasi SendGrid Anda

Untuk menguji konfigurasi SendGrid:

  1. Buat DAG pengujian yang menggunakan EmailOperator. Contoh:

import datetime

import airflow
from airflow.operators.email import EmailOperator


with airflow.DAG(
    "composer_sample_sendgrid",
    start_date=datetime.datetime(2022, 1, 1),
) as dag:
    task_email = EmailOperator(
        task_id="send-email",
        conn_id="sendgrid_default",
        # You can specify more than one recipient with a list.
        to="user@example.com",
        subject="EmailOperator test for SendGrid",
        html_content="This is a test message sent through SendGrid.",
        dag=dag,
    )
  1. Upload DAG ke lingkungan Anda dan periksa apakah tugas berhasil.
  2. Login ke SendGrid dengan kredensial SendGrid Anda.
  3. Di UI SendGrid, buka halaman Activity.
  4. Telusuri email dalam daftar. Anda akan melihat bahwa SendGrid memproses dan mengirimkan email.
  5. Jika email tidak diproses dan tidak terkirim:

    • Periksa konfigurasi SendGrid Anda.
    • Pastikan Anda telah mengaktifkan backend Secret Manager. Merek pastikan Anda telah memberikan izin tambahan dan menetapkan penggantian untuk Airflow opsi konfigurasi.
    • Periksa filter spam di program email Anda.

Mengonfigurasi layanan SMTP pihak ketiga

Untuk mengirim email melalui layanan SMTP pihak ketiga, ganti opsi konfigurasi Airflow email_backend dan mengonfigurasi parameter terkait SMTP lainnya.

Untuk mengonfigurasi layanan SMTP pihak ketiga, ganti opsi konfigurasi Airflow berikut:

Bagian Kunci Nilai
email email_backend airflow.utils.email.send_email_smtp
smtp smtp_host Nama host untuk server SMTP.
smtp smtp_user Nama pengguna di server SMTP.
smtp smtp_port Port untuk server SMTP. Port 25 tidak tersedia. Anda dapat menggunakan port lain, seperti port SMTP standar 465 dan 587.
smtp smtp_password Menyetel sandi melalui smtp_password tidak didukung. Untuk menyetel sandi SMTP, ikuti petunjuk yang diberikan di Mengonfigurasi sandi SMTP.
smtp smtp_mail_from Alamat email Dari, seperti noreply-composer@.
smtp smtp_starttls Untuk keamanan yang lebih baik, tetapkan ke True.
smtp smtp_ssl Untuk keamanan yang lebih baik, tetapkan ke True.

Mengonfigurasi sandi SMTP untuk layanan SMTP pihak ketiga

Menyimpan sandi SMTP dalam teks biasa dalam file konfigurasi Airflow adalah hal yang buruk praktik keamanan. Itu sebabnya Cloud Composer tidak mendukung metode ini. Sebagai gantinya, Anda dapat menggunakan dua metode lain untuk mengonfigurasi SMTP {i>password<i}.

Menggunakan perintah untuk mengambil sandi SMTP

Anda dapat menggunakan penggantian konfigurasi untuk menentukan perintah yang memperoleh Sandi SMTP. Saat berkomunikasi dengan layanan SMTP, Airflow menggunakan untuk mendapatkan nilai {i>password<i}. Tentukan satu perintah, tanpa operator {i>bash<i} seperti pipa dan pengalihan.

Untuk menggunakan metode ini, ganti Airflow berikut opsi konfigurasi:

Bagian Kunci Nilai
smtp smtp_password_cmd Tentukan perintah yang akan menampilkan sandi SMTP.

Menggunakan secret yang disimpan di Secret Manager untuk mengambil sandi SMTP

Anda dapat mengonfigurasi Secret Manager sebagai Backend secrets Airflow.

Setelah mengonfigurasi Secret Manager untuk Composer Anda dapat menyimpan sandi SMTP di Secret Manager:

  1. Buat secret baru:

    echo -n "SMTP_PASSWORD" | gcloud beta secrets create \
      airflow-config-smtp-password \
      --data-file=- \
      --replication-policy=automatic
    

    Ganti SMTP_PASSWORD dengan sandi SMTP Anda.

  2. Konfigurasi Airflow untuk mendapatkan sandi SMTP dari {i>Secret Manager<i}. Untuk melakukannya, ganti opsi konfigurasi Airflow berikut:

    Bagian Kunci Nilai
    smtp smtp_password_secret smtp-password

Langkah selanjutnya