View a markdown version of this page

Einen Apache Airflow CLI-Tokens erstellen - Von Amazon verwaltete Workflows für Apache Airflow

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

Tipp

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
  1. Kopieren Sie die Curl-Anweisung aus Ihrer Textdatei und fügen Sie sie in Ihre Befehlsshell ein.

    Anmerkung

    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
  2. 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
  1. Kopieren Sie die Curl-Anweisung aus Ihrer Textdatei und fügen Sie sie in Ihre Befehlsshell ein.

    Anmerkung

    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
  2. 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
  1. 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")"
  2. 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
  3. (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
  4. Führen Sie das folgende Skript aus, um ein Apache Airflow-CLI-Token zu erstellen.

    ./get-cli-token.sh
Apache Airflow v2
  1. 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"
  2. 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
  3. (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
  4. 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
  1. 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)
  2. Ersetzen Sie die Platzhalter durch YOUR_ENVIRONMENT_NAME undYOUR_DAG_NAME.

  3. Führen Sie das folgende Skript aus, um ein Apache Airflow CLI-Token zu erstellen.

    python3 create-cli-token.py
Apache Airflow v2
  1. 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)
  2. Ersetzen Sie die Platzhalter durch YOUR_ENVIRONMENT_NAME undYOUR_DAG_NAME.

  3. Führen Sie das folgende Skript aus, um ein Apache Airflow CLI-Token zu erstellen.

    python3 create-cli-token.py

Als nächstes

  • Erkunden Sie den Amazon MWAA-API-Vorgang, mit dem ein CLI-Token erstellt wurde, unter. CreateCliToken