翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Apache Airflow REST API の使用
Amazon Managed Workflows for Apache Airflow (Amazon MWAA) は、Apache Airflow v2.4.3 以降を実行している環境用の Apache Airflow REST API を使用して、Apache Airflow 環境を直接操作することをサポートしています。これにより、Amazon MWAA 環境にプログラムでアクセスして管理でき、データオーケストレーションワークフローの呼び出し、DAG の管理、メタデータデータベース、トリガー、スケジューラなどのさまざまな Apache Airflow コンポーネントのステータスのモニタリングの標準化された方法が提供されます。
Apache Airflow REST API の使用中にスケーラビリティをサポートするために、Amazon MWAA では、REST API リクエスト、コマンドラインインターフェイス (CLI) の使用、または同時実行されている他の Apache Airflow ユーザーインターフェイス (UI) のユーザーなどからの需要の増加に対応するためにウェブサーバー容量を水平スケールするオプションが用意されています。Amazon MWAA がウェブサーバーをスケールする方法の詳細については、Amazon MWAA ウェブサーバーの自動スケーリングの設定 を参照してください。
Apache Airflow REST API を使用して、環境に次のユースケースを実装できます。
-
プログラムによるアクセス — Apache Airflow UI や CLI に依存せずに、Apache Airflow DAG の実行を開始したり、データセットを管理したり、メタデータデータベース、トリガー、スケジューラなどのさまざまなコンポーネントのステータスを取得したりできるようになりました。
-
外部アプリケーションやマイクロサービスとの統合 – REST API サポートにより、Amazon MWAA 環境を他のシステムと統合するカスタムソリューションを構築できます。例えば、完了したデータベースジョブや新しいユーザーサインアップなど、外部システムからのイベントに応じてワークフローを開始できます。
-
集中型モニタリング – 複数の Amazon MWAA 環境にわたって DAG のステータスを集約するモニタリングダッシュボードを構築することで、集中型のモニタリングと管理が可能になります。
Apache Airflow REST API の詳細については、Apache Airflow REST API リファレンス
を使用するとInvokeRestApi、 AWS 認証情報を使用して Apache Airflow REST API にアクセスできます。または、ウェブサーバーアクセストークンを取得し、トークンを使用して呼び出すことでアクセスすることもできます。
InvokeRestApi オペレーションの使用中にメッセージ Update your environment to use InvokeRestApi でエラーが発生した場合は、Amazon MWAA 環境を更新する必要があることを示します。このエラーは、Amazon MWAA 環境が InvokeRestApi 機能に関連する最新の変更と互換性がない場合に発生します。この問題を解決するには、Amazon MWAA 環境を更新して、InvokeRestApi 機能に必要な変更を組み込みます。
InvokeRestApi オペレーションのデフォルトのタイムアウト期間は 10 秒です。この 10 秒以内にオペレーションが完了しない場合、オペレーションは自動的に終了され、エラーが発生します。エラーが発生しないように、REST API コールがこのタイムアウト期間内に完了するように設計されていることを確認します。
Apache Airflow REST API の使用中にスケーラビリティをサポートするために、Amazon MWAA では、REST API リクエスト、コマンドラインインターフェイス (CLI) の使用、または同時実行されている他の Apache Airflow ユーザーインターフェイス (UI) のユーザーなどからの需要の増加に対応するためにウェブサーバー容量を水平スケールするオプションが用意されています。Amazon MWAA がウェブサーバーをスケールする方法の詳細については、Amazon MWAA ウェブサーバーの自動スケーリングの設定 を参照してください。
Apache Airflow REST API を使用して、環境に次のユースケースを実装できます。
-
プログラムによるアクセス — Apache Airflow UI や CLI に依存せずに、Apache Airflow DAG の実行を開始したり、データセットを管理したり、メタデータデータベース、トリガー、スケジューラなどのさまざまなコンポーネントのステータスを取得したりできるようになりました。
-
外部アプリケーションやマイクロサービスとの統合 – REST API サポートにより、Amazon MWAA 環境を他のシステムと統合するカスタムソリューションを構築できます。例えば、完了したデータベースジョブや新しいユーザーサインアップなど、外部システムからのイベントに応じてワークフローを開始できます。
-
集中型モニタリング – 複数の Amazon MWAA 環境にわたって DAG のステータスを集約するモニタリングダッシュボードを構築することで、集中型のモニタリングと管理が可能になります。
Apache Airflow REST API の詳細については、Apache Airflow REST API リファレンス
を使用するとInvokeRestApi、 AWS 認証情報を使用して Apache Airflow REST API にアクセスできます。または、ウェブサーバーアクセストークンを取得し、トークンを使用して呼び出すことでアクセスすることもできます。
-
InvokeRestApiオペレーションの使用中にメッセージUpdate your environment to use InvokeRestApiでエラーが発生した場合は、Amazon MWAA 環境を更新する必要があることを示します。このエラーは、Amazon MWAA 環境がInvokeRestApi機能に関連する最新の変更と互換性がない場合に発生します。この問題を解決するには、Amazon MWAA 環境を更新して、InvokeRestApi機能に必要な変更を組み込みます。 -
InvokeRestApiオペレーションのデフォルトのタイムアウト期間は 10 秒です。この 10 秒以内にオペレーションが完了しない場合、オペレーションは自動的に終了され、エラーが発生します。エラーが発生しないように、REST API コールがこのタイムアウト期間内に完了するように設計されていることを確認します。
重要
応答ペイロードのサイズが 6 MB を超えることはできません。この制限を超えると、RestApi は失敗します。
次の例を使用して、Apache Airflow REST API への API 呼び出しを行い、新しい DAG 実行を開始します。
トピック
Apache Airflow REST API へのアクセス権の付与: airflow:InvokeRestApi
AWS 認証情報を使用して Apache Airflow REST API にアクセスするには、IAM ポリシーで アクセスairflow:InvokeRestApi許可を付与する必要があります。次のポリシーサンプルで、Admin、Op、User、Viewer または {airflow-role} の Public ロールを指定して、ユーザーアクセスのレベルをカスタマイズします。詳細については、Apache Airflow リファレンスガイド の デフォルトロール
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowMwaaRestApiAccess", "Effect": "Allow", "Action": ["airflow:InvokeRestApi","airflow:CreateWebLoginToken"], "Resource": [ "arn:aws:airflow:{your-region}:{your-account-id}:role/{your-environment-name}/{airflow-role}" ] } ] }
注記
InvokeRestApi は、 AWS 認証情報 (SigV4/IAM) で認証された Amazon MWAA サービス API コールです。呼び出すと、Amazon MWAA は AWS 内部ネットワーク経由で Apache Airflow ウェブサーバーからデータを取得します。ウェブサーバー自体がパブリックインターネットに公開されることはありません。
プライベートウェブサーバーを使用する環境では、パブリックインターネットInvokeRestApi経由で を呼び出すことができます。これには、IAM ポリシーの airflow:InvokeRestApiおよび アクセスairflow:CreateWebLoginToken許可が必要です。Apache Airflow ウェブ UI へのインタラクティブなアクセスは、Virtual Private Cloud (VPC) に制限されています。
VPC へのInvokeRestApi呼び出しを制限するには、 aws:SourceVpc または aws:SourceVpceキーを使用して IAM ポリシー条件を適用します。この条件キーの詳細については、「aws:SourceVpc」を参照してください。
Apache Airflow REST API の呼び出し
次のサンプル Python スクリプトは、Apache Airflow REST API の使用方法を示しています。このスクリプトは、環境で使用可能な DAGs を一覧表示し、Apache Airflow 変数を作成します。
import boto3 env_name = "MyAirflowEnvironment" def list_dags(client): request_params = { "Name": env_name, "Path": "/dags", "Method": "GET", "QueryParameters": { "paused": False } } response = client.invoke_rest_api( **request_params ) print("Airflow REST API response: ", response['RestApiResponse']) def create_variable(client): request_params = { "Name": env_name, "Path": "/variables", "Method": "POST", "Body": { "key": "test-restapi-key", "value": "test-restapi-value", "description": "Test variable created by MWAA InvokeRestApi API", } } response = client.invoke_rest_api( **request_params ) print("Airflow REST API response: ", response['RestApiResponse']) if __name__ == "__main__": client = boto3.client("mwaa") list_dags(client) create_variable(client)
ウェブサーバーセッショントークンの作成と、Apache Airflow REST API の呼び出し
ウェブサーバーアクセストークンを作成するには、次の Python 関数を使用します。この関数は、まず Amazon MWAA API を呼び出してウェブログイントークンを取得します。60 秒後に期限切れになるウェブログイントークンは、ウェブ セッション トークンと交換されます。これによりウェブサーバーにアクセスして Apache Airflow REST API を使用できます。スロットリング容量が 10 トランザクション/秒 (TPS) を超える場合は、この方法を使用して Apache Airflow REST API にアクセスできます。
セッショントークンは 12 時間後に期限切れになります。
ヒント
次のコードサンプルにおける Apache Airflow v2 から v3 への主な変更点は次のとおりです。
-
REST API パスが
/api/v1から/api/v2に変更されました -
ログインパスが
/aws_mwaa/loginから/pluginsv2/aws_mwaa/loginに変更されました -
ログイン
response.cookies["_token"]からのレスポンスには、後続の API コールに使用する必要があるトークン情報が含まれています。 -
REST API コールの場合、ヘッダー内の
jwt_token情報を次のように渡す必要があります。headers = { "Authorization": f"Bearer {jwt_token}", "Content-Type": "application/json" }
認証が完了すると、API エンドポイントへのリクエストの送信を開始するための認証情報が得られます。次のセクションの例では、エンドポイント dags/{dag_name}/dagRuns を使用します。