Apache Airflow CLI 토큰 생성 - Amazon Managed Workflows for Apache Airflow

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Apache Airflow CLI 토큰 생성

이 페이지의 명령을 사용하여 CLI 토큰을 생성한 명령 셸에서 직접 Amazon Managed Workflows for Apache Airflow API를 호출할 수 있습니다. 예를 들어, 토큰을 얻은 다음 Amazon MWAA API를 사용하여 프로그래밍 방식으로 DAG를 배포할 수 있습니다. 다음 섹션에는 AWS CLI, curl 스크립트, Python 스크립트 또는 bash 스크립트를 사용하여 Apache Airflow CLI 토큰을 생성하는 단계가 포함되어 있습니다. 응답에 반환되는 토큰은 60초 동안 유효합니다.

참고

AWS CLI 토큰은 비동기 API 명령이 아닌 동기 셸 작업을 대체하기 위한 것입니다. 따라서 사용 가능한 동시성은 제한됩니다. 웹 서버가 사용자에게 응답 상태를 유지하려면 이전 요청이 성공적으로 완료될 때까지 새 AWS CLI 요청을 열지 않는 것이 좋습니다.

필수 조건

다음 섹션에서는 이 페이지의 명령과 스크립트를 사용하는 데 필요한 예비 단계를 설명합니다.

액세스

AWS CLI

AWS Command Line Interface(AWS CLI)는 명령줄 셸의 명령을 사용하여 AWS 서비스와 상호 작용할 수 있는 오픈 소스 도구입니다. 이 페이지에서 단계를 완료하려면 다음이 필요합니다.

AWS CLI 사용

다음 예제에서는 AWS CLI에서 create-cli-token 명령을 사용하여 Apache Airflow CLI 토큰을 생성합니다.

aws mwaa create-cli-token --name YOUR_ENVIRONMENT_NAME

curl 스크립트 사용

다음 예제에서는 curl 스크립트를 사용하여 AWS CLI에서 create-web-login-token 명령을 호출하여 Apache Airflow 웹 서버의 엔드포인트를 통해 Apache Airflow CLI를 호출합니다.

Apache Airflow v2
  1. 텍스트 파일에서 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
  2. YOUR_REGION에 대한 자리 표시자를 사용자 환경, YOUR_DAG_NAMEYOUR_ENVIRONMENT_NAME에 대한 AWS 리전으로 대체합니다. 예를 들어, 퍼블릭 네트워크의 호스트 이름은 이와 같을 수 있습니다(https://) 없음.

    123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com
  3. 명령 프롬프트에 다음이 표시되어야 합니다.

    { "stderr":"<STDERR of the CLI execution (if any), base64 encoded>", "stdout":"<STDOUT of the CLI execution, base64 encoded>" }
Apache Airflow v1
  1. 텍스트 파일에서 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
  2. YOUR_REGION에 대한 자리 표시자를 사용자 환경, YOUR_DAG_NAMEYOUR_HOST_NAME에 대한 AWS 리전으로 대체합니다. 예를 들어, 퍼블릭 네트워크의 호스트 이름은 이와 같을 수 있습니다(https://) 없음.

    123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com
  3. 명령 프롬프트에 다음이 표시되어야 합니다.

    { "stderr":"<STDERR of the CLI execution (if any), base64 encoded>", "stdout":"<STDOUT of the CLI execution, base64 encoded>" }
  4. YOUR_ENVIRONMENT_NAMEYOUR_DAG_NAME에 대한 자리 표시자를 대체합니다.

bash 스크립트 사용

다음 예제에서는 bash 스크립트를 사용하여 AWS CLI에서 create-cli-token 명령을 호출하여 Apache Airflow CLI 토큰을 생성합니다.

Apache Airflow v2
  1. 다음 코드 샘플의 내용을 복사하고 로컬에서 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"
  2. 빨간색에서 YOUR_ENVIRONMENT_NAME, YOUR_HOST_NAMEYOUR_DAG_NAME에 대한 자리 표시자를 대체합니다. 예를 들어, 퍼블릭 네트워크의 호스트 이름은 이와 같을 수 있습니다(https://) 없음.

    123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com
  3. (선택 사항) macOS 및 Linux 사용자는 스크립트가 실행 가능한지 확인하기 위해 다음 명령을 실행해야 할 수도 있습니다.

    chmod +x get-cli-token.sh
  4. 다음 스크립트를 실행하여 Apache Airflow CLI 토큰을 생성합니다.

    ./get-cli-token.sh
Apache Airflow v1
  1. 다음 코드 샘플의 내용을 복사하고 로컬에서 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"
  2. 빨간색에서 YOUR_ENVIRONMENT_NAME, YOUR_HOST_NAMEYOUR_DAG_NAME에 대한 자리 표시자를 대체합니다. 예를 들어, 퍼블릭 네트워크의 호스트 이름은 이와 같을 수 있습니다(https://) 없음.

    123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com
  3. (선택 사항) macOS 및 Linux 사용자는 스크립트가 실행 가능한지 확인하기 위해 다음 명령을 실행해야 할 수도 있습니다.

    chmod +x get-cli-token.sh
  4. 다음 스크립트를 실행하여 Apache Airflow CLI 토큰을 생성합니다.

    ./get-cli-token.sh

Python 스크립트 사용

다음 예제에서는 Python 스크립트의 boto3 create_cli_token 메서드를 사용하여 Apache Airflow CLI 토큰을 생성하고 DAG를 트리거합니다. 이 스크립트는 Amazon MWAA 외부에서 실행할 수 있습니다. boto3 라이브러리를 설치하기만 하면 됩니다. 가상 환경을 만들어 라이브러리를 설치할 수도 있습니다. 계정에 대한 AWS 인증 보안 인증을 구성했다고 가정합니다.

Apache Airflow v2
  1. 다음 코드 샘플의 내용을 복사하고 로컬에서 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. YOUR_ENVIRONMENT_NAMEYOUR_DAG_NAME에 대한 자리 표시자를 대체합니다.

  3. 다음 스크립트를 실행하여 Apache Airflow CLI 토큰을 생성합니다.

    python3 create-cli-token.py
Apache Airflow v1
  1. 다음 코드 샘플의 내용을 복사하고 로컬에서 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)
  2. YOUR_ENVIRONMENT_NAMEYOUR_DAG_NAME에 대한 자리 표시자를 대체합니다.

  3. 다음 스크립트를 실행하여 Apache Airflow CLI 토큰을 생성합니다.

    python3 create-cli-token.py

다음 단계

  • CreateClitoken에서 CLI 토큰을 생성하는 데 사용되는 Amazon MWAA API 작업을 살펴보십시오.