本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 AWS Secrets Manager 秘密設定 Apache Airflow 連線
AWS Secrets Manager 是 Amazon Managed Workflows for Apache Airflow 環境上支援的替代 Apache Airflow 後端。本主題說明如何使用 AWS Secrets Manager 在 Amazon Managed Workflows for Apache Airflow 上安全存放 Apache Airflow 變數和 Apache Airflow 連線的秘密。
注意
-
您將需要為您建立的秘密付費。如需 Secrets Manager 定價的詳細資訊,請參閱AWS 定價
。 -
AWS Systems Manager 參數存放區也支援做為 Amazon MWAA 中的秘密後端。如需詳細資訊,請參閱 Amazon Provider Package 文件
。
內容
步驟一:提供 Amazon MWAA 存取 Secrets Manager 私密金鑰的許可
Amazon MWAA 環境的執行角色需要對 中的秘密金鑰進行讀取存取 AWS Secrets Manager。下列 IAM 政策允許使用 AWS 受管 SecretsManagerReadWrite
將政策連接至您的執行角色
-
在 Amazon MWAA 主控台上開啟環境頁面
。 -
選擇環境。
-
在許可窗格中選擇您的執行角色。
-
選擇連接政策。
-
SecretsManagerReadWrite
在篩選條件政策文字欄位中輸入 。 -
選擇連接政策。
如果您不想使用 AWS 受管許可政策,您可以直接更新環境的執行角色,以允許任何層級的 Secrets Manager 資源存取權。例如,下列政策陳述式會授予您在 Secrets Manager 中特定 AWS 區域中建立的所有秘密的讀取存取權。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetResourcePolicy", "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:ListSecretVersionIds" ], "Resource": "arn:aws:secretsmanager:us-west-2:012345678910:secret:*" }, { "Effect": "Allow", "Action": "secretsmanager:ListSecrets", "Resource": "*" } ] }
步驟 2:建立 Secrets Manager 後端做為 Apache Airflow 組態選項
下一節說明如何在 AWS Secrets Manager 後端的 Amazon MWAA 主控台上建立 Apache Airflow 組態選項。如果您在 中使用相同名稱的組態設定airflow.cfg
,則在下列步驟中建立的組態將優先並覆寫組態設定。
-
在 Amazon MWAA 主控台上開啟環境頁面
。 -
選擇環境。
-
選擇編輯。
-
選擇 Next (下一步)。
-
在 Airflow 組態選項窗格中選擇新增自訂組態。 新增下列鍵/值對:
-
:secrets.backend
airflow.providers.amazon.aws.secrets.secrets_manager.SecretsManagerBackend
-
:secrets.backend_kwargs
這會將 Apache Airflow 設定為尋找 和{"connections_prefix" : "airflow/connections", "variables_prefix" : "airflow/variables"}
airflow/variables/*
路徑的連線字串airflow/connections/*
和變數。您可以使用查詢模式
來減少 Amazon MWAA 代表您對 Secrets Manager 進行的 API 呼叫次數。如果您未指定查詢模式,Apache Airflow 會搜尋已設定後端中的所有連線和變數。透過指定模式,您可以縮小 Apache Airflow 看起來的可能路徑。這可降低將 Secrets Manager 與 Amazon MWAA 搭配使用時的成本。 若要指定查詢模式,請指定
connections_lookup_pattern
和variables_lookup_pattern
參數。這些參數接受 RegEx 字串做為輸入。例如,若要尋找開頭為 的秘密test
,請在 中輸入下列內容secrets.backend_kwargs
:{ "connections_prefix": "airflow/connections", "connections_lookup_pattern": "^test", "variables_prefix" : "airflow/variables", "variables_lookup_pattern": "^test" }
注意
若要使用
connections_lookup_pattern
和variables_lookup_pattern
,您必須安裝 7apache-airflow-providers-amazon
.3.0 版或更新版本。如需將 的 provder pacakge 更新至較新版本的詳細資訊,請參閱 指定較新的提供者套件。
-
-
選擇 Save (儲存)。
步驟三:產生 Apache Airflow AWS 連線 URI 字串
若要建立連線字串,請使用鍵盤上的「tab」鍵來縮排連線extra
物件建立變數。下一節會逐步引導您使用 Apache Airflow 或 Python 指令碼,為 Amazon MWAA 環境產生 Apache Airflow 連線 URI
步驟四:在 Secrets Manager 中新增變數
下一節說明如何在 Secrets Manager 中建立變數的秘密。
建立秘密
-
選擇儲存新機密。
-
選擇其他類型的秘密。
-
在指定要存放在此秘密窗格中的金鑰/值對上,選擇純文字。
-
以下列格式將變數值新增為純文字。
"
YOUR_VARIABLE_VALUE
"例如,若要指定整數:
14
例如,若要指定字串:
"mystring"
-
對於加密金鑰,請從下拉式清單中選擇 AWS KMS 金鑰選項。
-
在密碼名稱的文字欄位中輸入下列格式的名稱。
airflow/variables/
YOUR_VARIABLE_NAME
例如:
airflow/variables/test-variable
-
選擇 Next (下一步)。
-
在設定秘密頁面上的秘密名稱和描述窗格中,執行下列動作。
-
針對秘密名稱,請提供秘密的名稱。
-
(選用) 針對描述,提供秘密的描述。
選擇 Next (下一步)。
-
-
在設定輪換 - 選用保留預設選項,然後選擇下一步。
-
針對您要新增的任何其他變數,在 Secrets Manager 中重複這些步驟。
-
在檢閱頁面上,檢閱您的秘密,然後選擇儲存。
步驟 5:在 Secrets Manager 中新增連線
下一節說明如何在 Secrets Manager 中建立連線字串 URI 的秘密。
建立秘密
-
選擇儲存新機密。
-
選擇其他類型的秘密。
-
在指定要存放在此秘密窗格中的金鑰/值對上,選擇純文字。
-
以下列格式將連線 URI 字串新增為純文字。
YOUR_CONNECTION_URI_STRING
例如:
mysql://288888a0-50a0-888-9a88-1a111aaa0000.a1.us-east-1.airflow.amazonaws.com%2Fhome?role_arn=arn%3Aaws%3Aiam%3A%3A001122332255%3Arole%2Fservice-role%2FAmazonMWAA-MyAirflowEnvironment-iAaaaA®ion_name=us-east-1
警告
Apache Airflow 會剖析連線字串中的每個值。您不得使用單引號或雙引號,否則會將連線剖析為單一字串。
-
對於加密金鑰,從下拉式清單中選擇 AWS KMS 金鑰選項。
-
在密碼名稱的文字欄位中輸入下列格式的名稱。
airflow/connections/
YOUR_CONNECTION_NAME
例如:
airflow/connections/myconn
-
選擇 Next (下一步)。
-
在設定秘密頁面上的秘密名稱和描述窗格中,執行下列動作。
-
針對秘密名稱,請提供秘密的名稱。
-
(選用) 針對描述,提供秘密的描述。
選擇 Next (下一步)。
-
-
在設定輪換 - 選用保留預設選項,然後選擇下一步。
-
針對您要新增的任何其他變數,在 Secrets Manager 中重複這些步驟。
-
在檢閱頁面上,檢閱您的秘密,然後選擇儲存。
範本程式碼
-
了解如何使用 的範例程式碼,在本頁面上使用 Apache Airflow 連線的私密金鑰 (
myconn
)在 中使用私密金鑰 AWS Secrets Manager 進行 Apache Airflow 連線。 -
了解如何使用 的範例程式碼,在本頁面上使用 Apache Airflow 變數 (
test-variable
) 的私密金鑰針對 Apache Airflow 變數 AWS Secrets Manager 在 中使用私密金鑰。
資源
-
如需使用主控台和 設定 Secrets Manager 秘密的詳細資訊 AWS CLI,請參閱AWS Secrets Manager 《 使用者指南》中的建立秘密。
-
使用 Python 指令碼將大量 Apache Airflow 變數和連線遷移至 Secrets Manager,並將 Apache Airflow 連線和變數移至其中 AWS Secrets Manager
。
後續步驟?
-
了解如何在 中產生權杖以存取 Apache Airflow UI存取 Apache Airflow。