

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Apache Airflow 変数の AWS Secrets Manager におけるシークレットキーの使用
<a name="samples-secrets-manager-var"></a>

以下のサンプルは、Amazon Managed Workflows for Apache Airflow の Apache Airflow 変数のシークレットキーを取得するために AWS Secrets Manager を呼び出します。[AWS Secrets Manager シークレットを使用した Apache Airflow 接続の設定](connections-secrets-manager.md) でのステップを完了していることが前提となります。

**Topics**
+ [バージョン](#samples-secrets-manager-var-version)
+ [前提条件](#samples-secrets-manager-var-prereqs)
+ [アクセス許可](#samples-secrets-manager-var-permissions)
+ [要件](#samples-hive-dependencies)
+ [コードサンプル](#samples-secrets-manager-var-code)
+ [次のステップ](#samples-secrets-manager-var-next-up)

## バージョン
<a name="samples-secrets-manager-var-version"></a>

このページのコード例は、[Python 3.10](https://peps.python.org/pep-0619/) の **Apache Airflow v2** および [Python 3.11](https://peps.python.org/pep-0664/) の **Apache Airflow v3** で使用可能です。

## 前提条件
<a name="samples-secrets-manager-var-prereqs"></a>

このページのサンプルコードを使用するには、以下が必要です。
+ Secrets Manager バックエンドを Apache Airflow 設定オプションとして使用する方法は、[AWS Secrets Manager シークレットを使用した Apache Airflow 接続の設定](connections-secrets-manager.md) に記載されています。
+ [AWS Secrets Manager シークレットを使用した Apache Airflow 接続の設定](connections-secrets-manager.md) にリストされている、Secrets Manager の Apache Airflow 変数文字列。

## アクセス許可
<a name="samples-secrets-manager-var-permissions"></a>
+ [AWS Secrets Manager シークレットを使用した Apache Airflow 接続の設定](connections-secrets-manager.md) にリストされている Secrets Manager のアクセス許可。

## 要件
<a name="samples-hive-dependencies"></a>

このコード例を Apache Airflow v2 以降で使用する場合、追加の依存関係は必要ありません。[aws-mwaa-docker-images](https://github.com/aws/amazon-mwaa-docker-images) を使用して、Apache Airflow をインストールします。

## コードサンプル
<a name="samples-secrets-manager-var-code"></a>

以下の手順では、Secrets Manager を呼び出してシークレットを取得する DAG コードを作成する方法について説明します。

1. コマンドプロンプトで、DAG コードが保存されているディレクトリに移動します。例:

   ```
   cd dags
   ```

1. 以下のコードサンプルの内容をコピーし、ローカルに `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
       )
   ```

## 次のステップ
<a name="samples-secrets-manager-var-next-up"></a>
+ この例の DAG コードを Amazon S3 バケットの `dags` フォルダにアップロードする方法については、[DAG の追加と更新](configuring-dag-folder.md) を参照してください。