Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Einen Apache Airflow CLI-Tokens erstellen
Die REST-API ist moderner als die CLI und wurde für die programmatische Integration mit externen Systemen entwickelt. REST ist die bevorzugte Art der Interaktion mit Apache Airflow.
Sie können die Befehle auf dieser Seite verwenden, um ein CLI-Token zu generieren und dann Amazon Managed Workflows for Apache Airflow API-Aufrufe direkt in Ihrer Befehlsshell durchzuführen. Sie können beispielsweise ein Token abrufen und dann DAGs programmgesteuert mithilfe der Amazon MWAA-APIs bereitstellen. Der folgende Abschnitt enthält die Schritte zum Erstellen eines Apache Airflow-CLI-Tokens mithilfe eines Curl-Skripts AWS CLI, eines Python-Skripts oder eines Bash-Skripts. Das in der Antwort zurückgegebene Token ist 60 Sekunden lang gültig.
Das AWS CLI Token ist als Ersatz für synchrone Shell-Aktionen gedacht, nicht für asynchrone API-Befehle. Daher ist die verfügbare Parallelität begrenzt. Um sicherzustellen, dass der Webserver weiterhin für Benutzer reagiert, empfehlen wir, keine neue AWS CLI Anfrage zu öffnen, bis die vorherige erfolgreich abgeschlossen wurde.
Voraussetzungen
Im folgenden Abschnitt werden die vorbereitenden Schritte beschrieben, die zur Verwendung der Befehle und Skripts auf dieser Seite erforderlich sind.
Zugriff
AWS CLI
AWS Command Line Interface (AWS CLI) ist ein Open-Source-Tool, mit dem Sie mithilfe von Befehlen in Ihrer AWS Befehlszeilen-Shell mit Diensten interagieren können. Um die Schritte auf dieser Seite abzuschließen, benötigen Sie Folgendes:
Verwendung der AWS CLI
Im folgenden Beispiel wird der Befehl create-cli-token in der verwendet, um ein Apache Airflow-CLI-Token AWS CLI zu erstellen.
aws mwaa create-cli-token --name YOUR_ENVIRONMENT_NAME
Mithilfe eines Curl-Skripts
Verwenden Sie das folgende Curl-Skript, um den Befehl create-cli-token in der aufzurufen, AWS CLI um die Apache Airflow CLI über einen Endpunkt auf dem Apache Airflow-Webserver aufzurufen und eine DAG auszulösen.
- Apache Airflow v3
-
-
Kopieren Sie die Curl-Anweisung aus Ihrer Textdatei und fügen Sie sie in Ihre Befehlsshell ein.
Nachdem Sie es in Ihre Zwischenablage kopiert haben, müssen Sie möglicherweise Bearbeiten > Einfügen in Ihrem Shell-Menü verwenden.
CLI_JSON=$(aws mwaa --region us-east-1 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 -L --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 --logical-date $(date -u +"%Y-%m-%dT%H:%M:%SZ")") \
&& echo "Output:" \
&& echo $CLI_RESULTS | jq -r '.stdout' | base64 --decode \
&& echo "Errors:" \
&& echo $CLI_RESULTS | jq -r '.stderr' | base64 --decode
-
YOUR_DAG_NAMEErsetzen Sie durch den Namen Ihrer DAG, YOUR_ENVIRONMENT_NAME durch Ihren Umgebungsnamen und den AWS-Region durch die Region Ihrer Umgebung. Ein Hostname für ein öffentliches Netzwerk sieht beispielsweise wie folgt aus (ohne https://):
123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com
Ihre Eingabeaufforderung zeigt an:
{
"stderr":"<STDERR of the CLI execution (if any), base64 encoded>",
"stdout":"<STDOUT of the CLI execution, base64 encoded>"
}
- Apache Airflow v2
-
-
Kopieren Sie die Curl-Anweisung aus Ihrer Textdatei und fügen Sie sie in Ihre Befehlsshell ein.
Nachdem Sie es in Ihre Zwischenablage kopiert haben, müssen Sie möglicherweise Bearbeiten > Einfügen in Ihrem Shell-Menü verwenden.
CLI_JSON=$(aws mwaa --region us-east-1 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_DAG_NAMEErsetzen Sie durch den Namen Ihrer DAG, YOUR_ENVIRONMENT_NAME durch Ihren Umgebungsnamen und den AWS-Region durch die Region Ihrer Umgebung. Ein Hostname für ein öffentliches Netzwerk sieht beispielsweise wie folgt aus (ohne https://):
123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com
Ihre Eingabeaufforderung zeigt an:
{
"stderr":"<STDERR of the CLI execution (if any), base64 encoded>",
"stdout":"<STDOUT of the CLI execution, base64 encoded>"
}
Mit einem Bash-Skript
Verwenden Sie das folgende Bash-Skript, um den Befehl create-cli-token in der aufzurufen AWS CLI, ein Apache Airflow-CLI-Token zu erstellen und eine DAG auszulösen.
- Apache Airflow v3
-
-
Kopieren Sie den Inhalt des folgenden Codebeispiels und speichern Sie es lokal unter. get-cli-token.sh
# brew install jq
CLI_TOKEN=$(aws mwaa create-cli-token --name YOUR_ENVIRONMENT_NAME | jq -r '.CliToken') \
&& curl -L --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 --logical-date $(date -u +"%Y-%m-%dT%H:%M:%SZ")"
-
YOUR_ENVIRONMENT_NAMEErsetzen Sie durch Ihren Umgebungsnamen, YOUR_HOST_NAME durch Ihren Webserver-Hostnamen und YOUR_DAG_NAME durch den Namen Ihrer DAG. Ein Hostname für ein öffentliches Netzwerk sieht beispielsweise wie folgt aus (ohne https://):
123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com
(optional) macOS- und Linux-Benutzer müssen möglicherweise den folgenden Befehl ausführen, um sicherzustellen, dass das Skript ausführbar ist.
chmod +x get-cli-token.sh
-
Führen Sie das folgende Skript aus, um ein Apache Airflow-CLI-Token zu erstellen.
./get-cli-token.sh
- Apache Airflow v2
-
-
Kopieren Sie den Inhalt des folgenden Codebeispiels und speichern Sie es lokal unter. get-cli-token.sh
# brew install jq
CLI_TOKEN=$(aws mwaa create-cli-token --name YOUR_ENVIRONMENT_NAME | 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_NAMEErsetzen Sie durch Ihren Umgebungsnamen, YOUR_HOST_NAME durch Ihren Webserver-Hostnamen und YOUR_DAG_NAME durch den Namen Ihrer DAG. Ein Hostname für ein öffentliches Netzwerk sieht beispielsweise wie folgt aus (ohne https://):
123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com
-
(optional) macOS- und Linux-Benutzer können den folgenden Befehl ausführen, um sicherzustellen, dass das Skript ausführbar ist.
chmod +x get-cli-token.sh
-
Führen Sie das folgende Skript aus, um ein Apache Airflow-CLI-Token zu erstellen.
./get-cli-token.sh
Mithilfe eines Python-Skripts
Im folgenden Beispiel wird die https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/mwaa.html#MWAA.Client.create_cli_token boto3-Methode create_cli_token in einem Python-Skript verwendet, um ein Apache Airflow-CLI-Token zu erstellen und eine DAG auszulösen. Sie können dieses Skript außerhalb von Amazon MWAA ausführen. Das einzige, was Sie tun müssen, ist die Boto3-Bibliothek zu installieren. Möglicherweise möchten Sie eine virtuelle Umgebung erstellen, um die Bibliothek zu installieren. Es wird davon ausgegangen, dass Sie die AWS Anmeldeinformationen für Ihr Konto konfiguriert haben.
- Apache Airflow v3
-
-
Kopieren Sie den Inhalt des folgenden Codebeispiels und speichern Sie es lokal untercreate-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)
-
Ersetzen Sie die Platzhalter durch YOUR_ENVIRONMENT_NAME undYOUR_DAG_NAME.
-
Führen Sie das folgende Skript aus, um ein Apache Airflow CLI-Token zu erstellen.
python3 create-cli-token.py
- Apache Airflow v2
-
-
Kopieren Sie den Inhalt des folgenden Codebeispiels und speichern Sie es lokal unter. 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)
-
Ersetzen Sie die Platzhalter durch YOUR_ENVIRONMENT_NAME undYOUR_DAG_NAME.
-
Führen Sie das folgende Skript aus, um ein Apache Airflow CLI-Token zu erstellen.
python3 create-cli-token.py
Als nächstes