Apache Airflow 変数の AWS Secrets Manager におけるシークレットキーの使用
以下のサンプルは、Amazon Managed Workflows for Apache Airflow の Apache Airflow 変数のシークレットキーを取得するために AWS Secrets Manager を呼び出します。Apache Airflow 接続を秘密 AWS Secrets Manager を使用して構成する でのステップを完了していることが前提となります。
バージョン
このページのコード例は、Python 3.10
前提条件
このページのサンプルコードを使用するには、以下が必要です。
-
Secrets Manager バックエンドを Apache Airflow 設定オプションとして使用する方法は、Apache Airflow 接続を秘密 AWS Secrets Manager を使用して構成する に記載されています。
-
Apache Airflow 接続を秘密 AWS Secrets Manager を使用して構成する にリストされている、Secrets Manager の Apache Airflow 変数文字列。
アクセス許可
-
Apache Airflow 接続を秘密 AWS Secrets Manager を使用して構成する にリストされている Secrets Manager のアクセス許可。
要件
このコード例を Apache Airflow v2 以降で使用する場合、追加の依存関係は必要ありません。aws-mwaa-docker-images
コードサンプル
以下の手順では、Secrets Manager を呼び出してシークレットを取得する DAG コードを作成する方法について説明します。
-
コマンドプロンプトで、DAG コードが保存されているディレクトリに移動します。例:
cd dags -
以下のコードサンプルの内容をコピーし、ローカルに
secrets-manager-var.pyとして保存します。from airflow import DAG from airflow.operators.python_operator import PythonOperator from airflow.models import Variable from airflow.utils.dates import days_ago from datetime import timedelta import os DAG_ID = os.path.basename(__file__).replace(".py", "") DEFAULT_ARGS = { 'owner': 'airflow', 'depends_on_past': False, 'email': ['airflow@example.com'], 'email_on_failure': False, 'email_on_retry': False, } def get_variable_fn(**kwargs): my_variable_name = Variable.get("test-variable", default_var="undefined") print("my_variable_name: ", my_variable_name) return my_variable_name with DAG( dag_id=DAG_ID, default_args=DEFAULT_ARGS, dagrun_timeout=timedelta(hours=2), start_date=days_ago(1), schedule_interval='@once', tags=['variable'] ) as dag: get_variable = PythonOperator( task_id="get_variable", python_callable=get_variable_fn, provide_context=True )
次のステップ
-
この例の DAG コードを Amazon S3 バケットの
dagsフォルダにアップロードする方法については、DAG の追加と更新 を参照してください。