

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 針對 AWS Secrets Manager Apache Airflow 變數在 中使用私密金鑰
<a name="samples-secrets-manager-var"></a>

下列範例呼叫 AWS Secrets Manager 會在 Amazon Managed Workflows for Apache Airflow 上取得 Apache Airflow 變數的私密金鑰。它假設您已完成 中的步驟[使用 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 中的 **Apache Airflow v2** 和 Python 3.11 中的 **Apache Airflow v**3。 [https://peps.python.org/pep-0619/](https://peps.python.org/pep-0619/) [https://peps.python.org/pep-0664/](https://peps.python.org/pep-0664/)

## 先決條件
<a name="samples-secrets-manager-var-prereqs"></a>

若要使用此頁面上的範例程式碼，您需要下列項目：
+ Secrets Manager 後端做為 Apache Airflow 組態選項，如 所列[使用 AWS Secrets Manager 秘密設定 Apache Airflow 連線](connections-secrets-manager.md)。
+ Secrets Manager 中的 Apache Airflow 變數字串，如 所列[使用 AWS Secrets Manager 秘密設定 Apache Airflow 連線](connections-secrets-manager.md)。

## 權限
<a name="samples-secrets-manager-var-permissions"></a>
+ Secrets Manager 許可，如 所列[使用 AWS Secrets Manager 秘密設定 Apache Airflow 連線](connections-secrets-manager.md)。

## 要求
<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>

下列步驟說明如何建立 DAG 程式碼，呼叫 Secrets Manager 來取得秘密。

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` 資料夾[新增或更新 DAGs](configuring-dag-folder.md)。