View a markdown version of this page

Membuat token Apache Airflow CLI - Amazon Managed Workflows for Apache Airflow

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Membuat token Apache Airflow CLI

Tip

REST API lebih modern daripada CLI dan dirancang untuk integrasi terprogram dengan sistem eksternal. REST adalah cara yang lebih disukai untuk berinteraksi dengan Apache Airflow.

Anda dapat menggunakan perintah di halaman ini untuk menghasilkan token CLI, lalu membuat panggilan Amazon Managed Workflow untuk Apache Airflow API langsung di shell perintah Anda. Misalnya, Anda bisa mendapatkan token, lalu menerapkan DAG secara terprogram menggunakan Amazon MWAA API. Bagian berikut mencakup langkah-langkah untuk membuat token Apache Airflow CLI menggunakan AWS CLI, script curl, skrip Python, atau skrip bash. Token yang dikembalikan dalam respons berlaku selama 60 detik.

AWS CLI Token dimaksudkan sebagai pengganti tindakan shell sinkron, bukan perintah API asinkron. Dengan demikian, konkurensi yang tersedia terbatas. Untuk memastikan bahwa server web tetap responsif untuk pengguna, kami sarankan untuk tidak membuka AWS CLI permintaan baru sampai permintaan sebelumnya berhasil diselesaikan.

Prasyarat

Bagian berikut menjelaskan langkah-langkah awal yang diperlukan untuk menggunakan perintah dan skrip di halaman ini.

Akses

AWS CLI

AWS Command Line Interface (AWS CLI) adalah alat sumber terbuka yang dapat Anda gunakan untuk berinteraksi dengan AWS layanan menggunakan perintah di shell baris perintah Anda. Untuk menyelesaikan langkah-langkah di halaman ini, Anda memerlukan yang berikut:

Menggunakan AWS CLI

Contoh berikut menggunakan perintah create-cli-token di AWS CLI untuk membuat token Apache Airflow CLI.

aws mwaa create-cli-token --name YOUR_ENVIRONMENT_NAME

Menggunakan skrip curl

Gunakan skrip curl berikut untuk memanggil perintah create-cli-token di AWS CLI untuk memanggil Apache Airflow CLI melalui titik akhir di server web Apache Airflow dan memicu DAG.

Apache Airflow v3
  1. Salin pernyataan curl dari file teks Anda dan tempel di shell perintah Anda.

    catatan

    Setelah menyalinnya ke clipboard Anda, Anda mungkin perlu menggunakan Edit > Paste dari menu shell Anda.

    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. Ganti YOUR_DAG_NAME dengan nama DAG Anda, YOUR_ENVIRONMENT_NAME dengan nama lingkungan Anda, dan Wilayah AWS dengan Wilayah lingkungan Anda. Misalnya, nama host untuk jaringan publik menyerupai (tanpa https://):

    123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com

    Prompt perintah Anda menampilkan:

    { "stderr":"<STDERR of the CLI execution (if any), base64 encoded>", "stdout":"<STDOUT of the CLI execution, base64 encoded>" }
Apache Airflow v2
  1. Salin pernyataan curl dari file teks Anda dan tempel di shell perintah Anda.

    catatan

    Setelah menyalinnya ke clipboard Anda, Anda mungkin perlu menggunakan Edit > Paste dari menu shell Anda.

    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. Ganti YOUR_DAG_NAME dengan nama DAG Anda, YOUR_ENVIRONMENT_NAME dengan nama lingkungan Anda, dan Wilayah AWS dengan Wilayah lingkungan Anda. Misalnya, nama host untuk jaringan publik menyerupai (tanpa https://):

    123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com

    Prompt perintah Anda menampilkan:

    { "stderr":"<STDERR of the CLI execution (if any), base64 encoded>", "stdout":"<STDOUT of the CLI execution, base64 encoded>" }

Menggunakan skrip bash

Gunakan skrip bash berikut untuk memanggil perintah create-cli-token di, buat token CLI Apache Airflow AWS CLI, dan memicu DAG.

Apache Airflow v3
  1. Salin isi contoh kode berikut dan simpan secara lokal sebagaiget-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. Ganti YOUR_ENVIRONMENT_NAME dengan nama lingkungan Anda, YOUR_HOST_NAME dengan nama host server web Anda, dan YOUR_DAG_NAME dengan nama DAG Anda. Misalnya, nama host untuk jaringan publik menyerupai (tanpa https://):

    123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com
  3. (opsional) Pengguna macOS dan Linux mungkin perlu menjalankan perintah berikut untuk memastikan skrip dapat dieksekusi.

    chmod +x get-cli-token.sh
  4. Jalankan skrip berikut untuk membuat token Apache Airflow CLI.

    ./get-cli-token.sh
Apache Airflow v2
  1. Salin isi contoh kode berikut dan simpan secara lokal sebagaiget-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. Ganti YOUR_ENVIRONMENT_NAME dengan nama lingkungan Anda, YOUR_HOST_NAME dengan nama host server web Anda, dan YOUR_DAG_NAME dengan nama DAG Anda. Misalnya, nama host untuk jaringan publik menyerupai (tanpa https://):

    123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com
  3. (opsional) Pengguna macOS dan Linux dapat menjalankan perintah berikut untuk memastikan skrip dapat dieksekusi.

    chmod +x get-cli-token.sh
  4. Jalankan skrip berikut untuk membuat token Apache Airflow CLI.

    ./get-cli-token.sh

Menggunakan skrip Python

Contoh berikut menggunakan metode boto3 create_cli_token dalam skrip Python untuk membuat token Apache Airflow CLI dan memicu DAG. Anda dapat menjalankan skrip ini di luar Amazon MWAA. Satu-satunya hal yang perlu Anda lakukan adalah menginstal perpustakaan boto3. Anda mungkin ingin membuat lingkungan virtual untuk menginstal perpustakaan. Ini mengasumsikan Anda telah mengon figur AWS asi kredentif otentikasi untuk akun Anda.

Apache Airflow v3
  1. Salin isi contoh kode berikut dan simpan secara lokal sebagaicreate-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. Ganti placeholder untuk YOUR_ENVIRONMENT_NAME dan. YOUR_DAG_NAME

  3. Jalankan skrip berikut untuk membuat token Apache Airflow CLI.

    python3 create-cli-token.py
Apache Airflow v2
  1. Salin isi contoh kode berikut dan simpan secara lokal sebagaicreate-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. Ganti placeholder untuk YOUR_ENVIRONMENT_NAME dan. YOUR_DAG_NAME

  3. Jalankan skrip berikut untuk membuat token Apache Airflow CLI.

    python3 create-cli-token.py

Apa selanjutnya?

  • Jelajahi operasi Amazon MWAA API yang digunakan untuk membuat token CLI di. CreateCliToken