创建 Apache Airflow Web 登录令牌 - Amazon Managed Workflows for Apache Airflow
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建 Apache Airflow Web 登录令牌

您可以使用本页上的命令生成 Web 登录令牌,然后直接在命令 Shell 中调用 Amazon MWAA API。例如,您可以获取令牌,然后使用 Amazon MWAA API 以编程方式部署 DAG。下一节包括使用 Amazon CLI、bash 脚本、POST API 请求或 Python 脚本创建 Apache Airflow Web 登录令牌的步骤。响应中返回的令牌在 60 秒内有效。

先决条件

下一节介绍了使用本页上的命令和脚本所需的初步步骤。

访问

Amazon CLI

Amazon Command Line Interface(Amazon CLI)是一种开源工具,让您能够在命令行 Shell 中使用命令与各项 Amazon 服务进行交互。要完成本节中的步骤,您需要以下满足以下条件:

使用 Amazon CLI

以下示例使用 Amazon CLI 中的 create-web-login-token 命令创建 Apache Airflow Web 登录令牌。

aws mwaa create-web-login-token --name YOUR_ENVIRONMENT_NAME

使用 bash 脚本

以下示例使用 bash 脚本调用 Amazon CLI 中的 create-web-login-token 命令来创建 Apache Airflow Web 登录令牌。

  1. 复制以下代码示例的内容,并在本地另存为 get-web-token.sh

    #!/bin/bash HOST=YOUR_HOST_NAME YOUR_URL=https://$HOST/aws_mwaa/aws-console-sso?login=true# WEB_TOKEN=$(aws mwaa create-web-login-token --name YOUR_ENVIRONMENT_NAME --query WebToken --output text) echo $YOUR_URL$WEB_TOKEN
  2. 红色占位符代替 YOUR_HOST_NAMEYOUR_ENVIRONMENT_NAME。例如,公有网络的主机名可能如下所示(没有 https://)

    123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com
  3. (可选)macOS 和 Linux 用户可能需要运行以下命令以确保脚本可执行。

    chmod +x get-web-token.sh
  4. 运行以下脚本可获取 Web 登录令牌。

    ./get-web-token.sh
  5. 您应该在命令提示符中看到如下内容:

    https://123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com/aws_mwaa/aws-console-sso?login=true#{your-web-login-token}

使用 POST API 请求

以下示例使用 POST API 请求创建 Apache Airflow Web 登录令牌。

  1. 复制以下 URL 并将其粘贴到 REST API 客户端的 URL 字段中。

    https://YOUR_HOST_NAME/aws_mwaa/aws-console-sso?login=true#WebToken
  2. 红色占位符代替 YOUR_HOST_NAME。例如,公有网络的主机名可能如下所示(没有 https://)

    123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com
  3. 复制以下 JSON 并将其粘贴到 REST API 客户端的正文字段中。

    { "name": "YOUR_ENVIRONMENT_NAME" }
  4. 红色占位符代替 YOUR_ENVIRONMENT_NAME

  5. 在授权字段中添加键值对。例如,如果您使用的是 Postman,请选择 Amazon 签名,然后输入:

    • AccessKey 中的 AWS_ACCESS_KEY_ID

    • SecretKey 中的 AWS_SECRET_ACCESS_KEY

  6. 您应看到以下响应:

    { "webToken": "<Short-lived token generated for enabling access to the Apache Airflow Webserver UI>", "webServerHostname": "<Hostname for the WebServer of the environment>" }

使用 Python 脚本

以下示例使用 Python 脚本中的 boto3 create_web_login_token 方法来创建 Apache Airflow Web 登录令牌。您可以在 Amazon MWAA 之外运行此脚本。您只需安装 boto3 库。您可能需要创建一个虚拟环境来安装该库。该环境假设您已经为账户配置了 Amazon 身份验证凭证

  1. 复制以下代码示例的内容,并在本地另存为 create-web-login-token.py

    import boto3 mwaa = boto3.client('mwaa') response = mwaa.create_web_login_token( Name="YOUR_ENVIRONMENT_NAME" ) webServerHostName = response["WebServerHostname"] webToken = response["WebToken"] airflowUIUrl = 'https://{0}/aws_mwaa/aws-console-sso?login=true#{1}'.format(webServerHostName, webToken) print("Here is your Airflow UI URL: ") print(airflowUIUrl)
  2. 红色占位符代替 YOUR_ENVIRONMENT_NAME

  3. 运行以下脚本可获取 Web 登录令牌。

    python3 create-web-login-token.py

接下来做什么?