翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS Secrets Manager シークレットを使用した Apache Airflow 接続の設定
AWS Secrets Manager は、Amazon Managed Workflows for Apache Airflow 環境でサポートされている代替 Apache Airflow バックエンドです。このトピックでは、 AWS Secrets Manager を使用して Apache Airflow 変数と Apache Airflow 接続のシークレットを Amazon Managed Workflows for Apache Airflow に安全に保存する方法を示します。
注記
-
作成したシークレットには料金が発生します。Secrets Manager の価格については、「AWS 価格
」を参照してください。 -
AWS Systems Manager パラメータストアは、Amazon MWAA のシークレットバックエンドとしてもサポートされています。詳細については、Amazon プロバイダーパッケージのドキュメント
を参照してください。
目次
ステップ 1: Amazon MWAA に Secrets Manager シークレットキーにアクセスするアクセス許可を付与する
Amazon MWAA 環境の実行ロールには、シークレットキーへの読み取りアクセスが必要です AWS Secrets Manager。次の IAM ポリシーは、 AWS マネージド SecretsManagerReadWrite
実行ロールにポリシーを添付するには
-
Amazon MWAA コンソールで環境ページ
を開きます。 -
環境を選択します。
-
[権限] ペインで実行ロールを選択します。
-
[Attach policies] (ポリシーの添付) を選択します。
-
[Filter policies] (フィルターポリシー) テキストフィールドに
SecretsManagerReadWrite
をタイプ。 -
Attach policy] (ポリシーのアタッチ) を選択します。
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/connections/*
およびairflow/variables/*
のパスで検索するように構成されます。ルックアップパターン
を使用すると、Amazon API がユーザーに代わって Secrets Manager に対して行う MWAA 呼び出しの数を減らすことができます。検索パターンを指定しない場合、Apache Airflow は設定されたバックエンドのすべての接続と変数を検索します。パターンを指定することで、Apache Airflow が検索する可能性のあるパスを絞り込むことができます。これにより、Amazon MWAA で Secrets Manager を使用する場合のコストを削減できます。 ルックアップパターンを指定するには、
connections_lookup_pattern
およびvariables_lookup_pattern
パラメータを指定します。これらのパラメータは、入力として a 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
を使用するには、apache-airflow-providers-amazon
バージョン 7.3.0 以上をインストールする必要があります。プロバイダパッケージを新しいバージョンに更新する方法の詳細については、新しいプロバイダーパッケージの指定 を参照してください。
-
-
[Save] を選択します。
ステップ 3: Apache Airflow AWS 接続の URI 文字列を生成する
「接続extra
オブジェクト用の変数を作成することをおすすめします。次のセクションでは、Apache Airflow または Python スクリプトを使用して Amazon Word 環境の Apache Airflow 接続 Word URI文字列を生成する
ステップ 4: 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 は接続文字列の各値を解析します。一重引用符や二重引用符は使用しないでください。そうしないと、接続が 1 つの文字列として解析されます。
-
暗号化キーで、ドロップダウンリストから AWS KMS キーオプションを選択します。
-
[シークレット名] のテキストフィールドに、次の形式で名前を入力します。
airflow/connections/
YOUR_CONNECTION_NAME
例:
airflow/connections/myconn
-
[Next (次へ)] を選択します。
-
[シークレットの設定] ページの [シークレットの名前と説明] ペインで、次の操作を行います。
-
[シークレット名] には、シークレットの名前を入力します。
-
(オプション)[説明] として、シークレットの説明を入力します。
[Next (次へ)] を選択します。
-
-
[ローテーションの設定-オプション] では、デフォルトオプションのままにして、[次へ] を選択します。
-
追加したい変数があれば、Secrets Manager でこれらの手順を繰り返します。
-
[レビュー] ページで、自分の秘密を確認し、[ストア] を選択します。
「サンプルコード」
-
このページの Apache Airflow 接続 (
myconn
) のシークレットキーの使用方法については、Apache Airflow 接続 AWS Secrets Manager に でシークレットキーを使用する のサンプルコードを参照してください。 -
このページの Apache Airflow 変数 (
test-variable
) のシークレットキーの使用方法については、Apache Airflow 変数の AWS Secrets Manager におけるシークレットキーの使用 にあるサンプルコードを使用して学習してください。
リソース
-
コンソールと を使用して Secrets Manager シークレットを設定する方法の詳細については AWS CLI、「 AWS Secrets Manager ユーザーガイド」の「シークレットの作成」を参照してください。
-
Apache Airflowの大量の変数や接続をSecrets Managerに移行するために、Pythonスクリプトを使用して、Apache Airflowの接続と変数を AWS Secrets Managerに移動してください
。
次のステップ
-
Apache Airflow へのアクセス で Apache Airflow UI にアクセスするトークンを生成する方法について説明します。