翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Apache Airflow CLI トークンの作成
このページのコマンドを使用して CLI トークンを生成し、Amazon Managed Workflows for Apache Airflow API 呼び出しをコマンドシェルで直接行うことができます。例えば、トークンを取得し、Amazon MWAA API を使用してプログラムで DAG をデプロイできます。次のセクションでは、、curl スクリプト AWS CLI、Python スクリプト、または bash スクリプトを使用して Apache Airflow CLI トークンを作成する手順について説明します。レスポンスでリターンされるトークンは 60 秒間有効です。
AWS CLI トークンは、非同期 API コマンドではなく、同期シェルアクションの置き換えを目的としています。そのため、同時実行には制限があります。ウェブサーバーがユーザーの応答性を維持するには、前のリクエストが正常に完了するまで新しい AWS CLI リクエストを開かないようにすることをお勧めします。
前提条件
以下のセクションでは、このページのコマンドとスクリプトを使用するために必要な準備手順について説明します。
アクセス
AWS CLI
AWS Command Line Interface (AWS CLI) は、コマンドラインシェルのコマンドを使用して AWS サービスを操作できるオープンソースツールです。このページのステップを完了するには、以下のものが必要です。
の使用 AWS CLI
次の例では、 の create-cli-token コマンドを使用して Apache Airflow CLI トークン AWS CLI を作成します。
aws mwaa create-cli-token --name YOUR_ENVIRONMENT_NAME
curl スクリプトを使用する
次の例では、curl スクリプトを使用して で create-web-login-token コマンドを呼び出し AWS CLI 、Apache Airflow ウェブサーバーのエンドポイントを介して Apache Airflow CLI を呼び出します。
- Apache Airflow v2
-
-
テキストファイルから curl ステートメントをコピーし、コマンドシェルに貼り付けます。
クリップボードにコピーしたら、シェルメニューから [編集] > [貼り付け] を使用する必要がある場合があります。
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 ステートメントをコピーし、コマンドシェルに貼り付けます。
クリップボードにコピーしたら、シェルメニューから [編集] > [貼り付け] を使用する必要がある場合があります。
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
"
-
赤色
のプレースホルダーを、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
"
-
赤色
のプレースホルダーを、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 スクリプトを使用します
次の例では、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
次のステップ