หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
หมายเหตุ
งานกระแสอากาศ Apache ขับเคลื่อนด้วย กระแสอากาศ Apache
Apache Airflow มี Backend ต่าง ๆ เพื่อจัดเก็บข้อมูลที่สําคัญได้อย่างปลอดภัย เช่น ตัวแปรและการเชื่อมต่อ หนึ่งในตัวเลือกเหล่านี้คือ Azure Key Vault บทความนี้จะแนะนําคุณเกี่ยวกับกระบวนการกําหนดค่า Key Vault เป็นส่วนหลังลับสําหรับงานกระแสอากาศ Apache
ข้อกำหนดเบื้องต้น
- สมัครใช้งาน Azure: ถ้าคุณยังไม่มีการสมัครใช้งาน Azure สร้าง บัญชี Azure ฟรีก่อนที่คุณจะเริ่ม
- Azure Key Vault: คุณสามารถทําตาม บทช่วยสอนนี้เพื่อสร้างอินสแตนซ์ ชุดเก็บคีย์ใหม่ได้ถ้าคุณยังไม่มี
- บริการหลัก: คุณสามารถสร้าง บริการหลัก ใหม่หรือใช้บริการที่มีอยู่และให้สิทธิ์ในการเข้าถึงอินสแตนซ์ Key Vault ของคุณ ตัวอย่างเช่น คุณสามารถมอบ บทบาท key-vault-contributor ให้กับชื่อบริการหลัก (SPN) สําหรับอินสแตนซ์ Key Vault ของคุณเพื่อให้ SPN สามารถจัดการได้ คุณยังจําเป็นต้องรับ Client ID และ Client Secret (คีย์ API) ของบริการหลักเพื่อเพิ่มเป็นตัวแปรสภาพแวดล้อม ตามที่อธิบายไว้ในบทความนี้ในภายหลัง
การอนุญาต
กําหนดบทบาทต่อไปนี้ในอินสแตนซ์ชุดเก็บคีย์ของ SPN ของคุณจาก บทบาทที่มีอยู่ภายใน:
- ผู้สนับสนุนชุดเก็บคีย์
- ผู้ใช้ Key Vault Secrets
การกําหนดค่าเพื่อเปิดใช้งาน Azure Key Vault เป็นส่วนหลังลับในงานกระแสอากาศ Apache
ข้อกําหนดของกระแสอากาศ: ติดตั้ง apache-airflow-providers-microsoft-azure ระหว่างการตั้งค่าสภาพแวดล้อม Airflow เริ่มต้นของคุณ
การแทนที่การกําหนดค่า: เพิ่มการตั้งค่าต่อไปนี้สําหรับการ แทนที่ การกําหนดค่า Airflow ในคุณสมบัติรันไทม์การรวม:
-
AIRFLOW__SECRETS__BACKEND:
airflow.providers.microsoft.azure.secrets.key_vault.AzureKeyVaultBackend
-
AIRFLOW__SECRETS__BACKEND_KWARGS:
{"connections_prefix": "airflow-connections", "variables_prefix": "airflow-variables", "vault_url": **\<your keyvault uri\>**}
-
AIRFLOW__SECRETS__BACKEND:
ตัวแปรสภาพแวดล้อม: เพิ่มตัวแปรต่อไปนี้สําหรับการกําหนดค่าในคุณสมบัติรันไทม์การรวม Airflow:
- AZURE_CLIENT_ID = <ID ไคลเอ็นต์ของ SPN>
- AZURE_TENANT_ID = <รหัสผู้เช่า>
- AZURE_CLIENT_SECRET = <ข้อมูลลับไคลเอ็นต์ของ SPN>
ด้วยการตั้งค่าเหล่านี้ คุณสามารถใช้ตัวแปรและการเชื่อมต่อภายใน DAG ของ Airflow ได้ ชื่อของการเชื่อมต่อและตัวแปรจําเป็นต้องทําตาม
AIRFLOW__SECRETS__BACKEND_KWARGS
ตามที่กําหนดไว้ก่อนหน้านี้ ตัวอย่างเช่น ถ้าชื่อตัวแปรคือsample_var
คุณควรเก็บไว้เป็นairflow-variables-sample-var
สําหรับข้อมูลเพิ่มเติม โปรดดู ที่ Azure Key Vault เป็นส่วนหลังของข้อมูลลับ
ตัวอย่าง DAG โดยใช้ Key Vault เป็น Backend
สร้างไฟล์
adf.py
Python ใหม่ด้วยเนื้อหาต่อไปนี้:from datetime import datetime, timedelta from airflow.operators.python_operator import PythonOperator from textwrap import dedent from airflow.models import Variable from airflow import DAG import logging def retrieve_variable_from_akv(): variable_value = Variable.get("sample-variable") logger = logging.getLogger(__name__) logger.info(variable_value) with DAG( "tutorial", default_args={ "depends_on_past": False, "email": ["airflow@example.com"], "email_on_failure": False, "email_on_retry": False, "retries": 1, "retry_delay": timedelta(minutes=5), }, description="This DAG shows how to use Azure Key Vault to retrieve variables in Apache Airflow DAG", schedule_interval=timedelta(days=1), start_date=datetime(2021, 1, 1), catchup=False, tags=["example"], ) as dag: get_variable_task = PythonOperator( task_id="get_variable", python_callable=retrieve_variable_from_akv, ) get_variable_task
ตัวแปรที่จัดเก็บไว้ใน Azure Key Vault