翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Apache エアフロー CLI トークンを作成する
このページのコマンドを使用して CLI トークンを生成し、Apache Airflow 用 Amazon マネージドワークフロー (MWAA) API 呼び出しをコマンドシェルで直接行うことができます。たとえば、トークンを取得し、Amazon MWAA API を使用してプログラムで DAG をデプロイできます。以下のセクションでは、以下を使用して Apache Airflow CLI トークンを作成する手順について説明します。AWS CLI、curl スクリプト、Python スクリプト、または bash スクリプト。レスポンスで返されるトークンは60秒間有効です。
-AWS CLIトークンは同期シェルアクションの代替として意図されており、非同期 API コマンドではありません。そのため、利用可能な同時実行性は限られています。Webサーバーがユーザーに対して応答し続けることを保証するために、新しいサーバーを開かないことをお勧めしますAWS CLI前のものが正常に完了するまで要求します。
前提条件
次のセクションでは、このページのコマンドとスクリプトを使用するために必要な準備手順について説明します。
アクセス
AWS CLI
AWS Command Line Interface (AWS CLI) は、コマンドラインシェルでコマンドを使用して AWS サービスとやり取りするためのオープンソースツールです。このページの手順を完了するには、以下が必要です。
AWS CLIの使用
次の例ではを使用していますcreate-cli-tokenコマンドのAWS CLIをクリックして、Apache Airflow CLI トークンを作成します。
aws mwaa create-cli-token --name YOUR_ENVIRONMENT_NAME
curl スクリプトを使う
次の例では、curl スクリプトを使用してcreate-web-login-tokenコマンドのAWS CLIApache Airflow ウェブサーバー上のエンドポイント経由で Apache Airflow CLI を呼び出します。
- Apache Airflow v2
-
-
テキストファイルから curl ステートメントをコピーし、コマンドシェルに貼り付けます。
クリップボードにコピーしたら、[Paste]シェルメニューから選択します。
CLI_JSON=$(aws mwaa --region YOUR_REGION
create-cli-token --name YOUR_ENVIRONMENT_NAME
) \
&& CLI_TOKEN=$(echo $CLI_JSON | jq -r '.CliToken') \
&& WEB_SERVER_HOSTNAME=$(echo $CLI_JSON | jq -r '.WebServerHostname') \
&& CLI_RESULTS=$(curl --request POST "https://$WEB_SERVER_HOSTNAME/aws_mwaa/cli" \
--header "Authorization: Bearer $CLI_TOKEN" \
--header "Content-Type: text/plain" \
--data-raw "dags trigger YOUR_DAG_NAME
") \
&& echo "Output:" \
&& echo $CLI_RESULTS | jq -r '.stdout' | base64 --decode \
&& echo "Errors:" \
&& echo $CLI_RESULTS | jq -r '.stderr' | base64 --decode
-
プレースホルダをYOUR_REGION
とAWSあなたの環境のリージョン、YOUR_DAG_NAME
, およびYOUR_ENVIRONMENT_NAME
。たとえば、パブリックネットワークのホスト名は次のようになります (https://):
123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com
-
コマンドプロンプトに次のように表示されます。
{
"stderr":"<STDERR of the CLI execution (if any), base64 encoded>",
"stdout":"<STDOUT of the CLI execution, base64 encoded>"
}
- Apache Airflow v1
-
-
テキストファイルから cURL ステートメントをコピーし、コマンドシェルに貼り付けます。
クリップボードにコピーしたら、[Paste]シェルメニューから選択します。
CLI_JSON=$(aws mwaa --region YOUR_REGION
create-cli-token --name YOUR_ENVIRONMENT_NAME
) \
&& CLI_TOKEN=$(echo $CLI_JSON | jq -r '.CliToken') \
&& WEB_SERVER_HOSTNAME=$(echo $CLI_JSON | jq -r '.WebServerHostname') \
&& CLI_RESULTS=$(curl --request POST "https://$WEB_SERVER_HOSTNAME/aws_mwaa/cli" \
--header "Authorization: Bearer $CLI_TOKEN" \
--header "Content-Type: text/plain" \
--data-raw "trigger_dag YOUR_DAG_NAME
") \
&& echo "Output:" \
&& echo $CLI_RESULTS | jq -r '.stdout' | base64 --decode \
&& echo "Errors:" \
&& echo $CLI_RESULTS | jq -r '.stderr' | base64 --decode
-
プレースホルダをYOUR_REGION
とAWSあなたの環境のリージョン、YOUR_DAG_NAME
, およびYOUR_HOST_NAME
。たとえば、パブリックネットワークのホスト名は次のようになります (https://):
123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com
-
コマンドプロンプトに次のように表示されます。
{
"stderr":"<STDERR of the CLI execution (if any), base64 encoded>",
"stdout":"<STDOUT of the CLI execution, base64 encoded>"
}
-
プレースホルダをYOUR_ENVIRONMENT_NAME
そしてYOUR_DAG_NAME
。
bash スクリプトを使う
次の例では、bash スクリプトを使用してcreate-cli-tokenコマンドのAWS CLIをクリックして、Apache Airflow CLI トークンを作成します。
- Apache Airflow v2
-
-
次のコードサンプルの内容をコピーし、次のようにローカルに保存しますget-cli-token.sh
。
# brew install jq
aws mwaa create-cli-token --name YOUR_ENVIRONMENT_NAME
| export CLI_TOKEN=$(jq -r .CliToken) && curl --request POST "https://YOUR_HOST_NAME
/aws_mwaa/cli" \
--header "Authorization: Bearer $CLI_TOKEN" \
--header "Content-Type: text/plain" \
--data-raw "dags trigger YOUR_DAG_NAME
"
-
のプレースホルダを置き換えますred
にとってYOUR_ENVIRONMENT_NAME
,YOUR_HOST_NAME
, およびYOUR_DAG_NAME
。たとえば、パブリックネットワークのホスト名は次のようになります (https://):
123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com
-
(オプション) macOS と Linux ユーザーが次のコマンドを実行して、スクリプトが実行可能であることを確認する必要があります。
chmod +x get-cli-token.sh
-
次のスクリプトを実行して、Apache Airflow CLI トークンを作成します。
./get-cli-token.sh
- Apache Airflow v1
-
-
次のコードサンプルの内容をコピーし、次のようにローカルに保存しますget-cli-token.sh
。
# brew install jq
aws mwaa create-cli-token --name YOUR_ENVIRONMENT_NAME
| export CLI_TOKEN=$(jq -r .CliToken) && curl --request POST "https://YOUR_HOST_NAME
/aws_mwaa/cli" \
--header "Authorization: Bearer $CLI_TOKEN" \
--header "Content-Type: text/plain" \
--data-raw "trigger_dag YOUR_DAG_NAME
"
-
のプレースホルダを置き換えますred
にとってYOUR_ENVIRONMENT_NAME
,YOUR_HOST_NAME
, およびYOUR_DAG_NAME
。たとえば、パブリックネットワークのホスト名は次のようになります (https://):
123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com
-
(オプション) macOS と Linux ユーザーが次のコマンドを実行して、スクリプトが実行可能であることを確認する必要があります。
chmod +x get-cli-token.sh
-
次のスクリプトを実行して、Apache Airflow CLI トークンを作成します。
./get-cli-token.sh
Python スクリプトを使用する
次の例ではを使用していますboto3 create_cli_tokenメソッドを使用して、Apache Airflow CLI トークンを作成し、DAG をトリガーします。このスクリプトは、Amazon MWAA の外部で実行できます。必要なことは、boto3 ライブラリをインストールすることです。ライブラリをインストールする仮想環境を作成するとよいでしょう。あなたが持っていることを前提としています設定済みAWS認証情報あなたのアカウントのために。
- Apache Airflow v2
-
-
次のコードサンプルの内容をコピーし、次のようにローカルに保存しますcreate-cli-token.py
。
"""
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""
import boto3
import json
import requests
import base64
mwaa_env_name = 'YOUR_ENVIRONMENT_NAME'
dag_name = 'YOUR_DAG_NAME'
mwaa_cli_command = 'dags trigger'
client = boto3.client('mwaa')
mwaa_cli_token = client.create_cli_token(
Name=mwaa_env_name
)
mwaa_auth_token = 'Bearer ' + mwaa_cli_token['CliToken']
mwaa_webserver_hostname = 'https://{0}/aws_mwaa/cli'.format(mwaa_cli_token['WebServerHostname'])
raw_data = '{0} {1}'.format(mwaa_cli_command, dag_name)
mwaa_response = requests.post(
mwaa_webserver_hostname,
headers={
'Authorization': mwaa_auth_token,
'Content-Type': 'text/plain'
},
data=raw_data
)
mwaa_std_err_message = base64.b64decode(mwaa_response.json()['stderr']).decode('utf8')
mwaa_std_out_message = base64.b64decode(mwaa_response.json()['stdout']).decode('utf8')
print(mwaa_response.status_code)
print(mwaa_std_err_message)
print(mwaa_std_out_message)
-
プレースホルダをYOUR_ENVIRONMENT_NAME
そしてYOUR_DAG_NAME
。
-
次のスクリプトを実行して、Apache Airflow CLI トークンを作成します。
python3 create-cli-token.py
- Apache Airflow v1
-
-
次のコードサンプルの内容をコピーし、次のようにローカルに保存しますcreate-cli-token.py
。
import boto3
import json
import requests
import base64
mwaa_env_name = 'YOUR_ENVIRONMENT_NAME'
dag_name = 'YOUR_DAG_NAME'
mwaa_cli_command = 'trigger_dag'
client = boto3.client('mwaa')
mwaa_cli_token = client.create_cli_token(
Name=mwaa_env_name
)
mwaa_auth_token = 'Bearer ' + mwaa_cli_token['CliToken']
mwaa_webserver_hostname = 'https://{0}/aws_mwaa/cli'.format(mwaa_cli_token['WebServerHostname'])
raw_data = '{0} {1}'.format(mwaa_cli_command, dag_name)
mwaa_response = requests.post(
mwaa_webserver_hostname,
headers={
'Authorization': mwaa_auth_token,
'Content-Type': 'text/plain'
},
data=raw_data
)
mwaa_std_err_message = base64.b64decode(mwaa_response.json()['stderr']).decode('utf8')
mwaa_std_out_message = base64.b64decode(mwaa_response.json()['stdout']).decode('utf8')
print(mwaa_response.status_code)
print(mwaa_std_err_message)
print(mwaa_std_out_message)
-
プレースホルダをYOUR_ENVIRONMENT_NAME
そしてYOUR_DAG_NAME
。
-
次のスクリプトを実行して、Apache Airflow CLI トークンを作成します。
python3 create-cli-token.py
次のステップ