如何在 Cloud Composer 上安装 AWS CLI?

问题描述 投票:0回答:1

我需要在 Google Cloud Composer 上安装 AWS CLI 工具,才能将其与 Airflow DAG 中的 BashOperator 一起使用。

AWS CLI 文档页面 解释了如何将其安装为软件包,但 Cloud Composer 不支持在所有实例上安装 apt 软件包的方法。

我的动力。我需要将大型 S3 存储桶与另一个存储同步。命令

aws s3 sync
(link) 非常适合此操作。不幸的是,我没有在 Airflow Amazon 提供商运营商中找到此命令的替代品。另外,boto 和 boto3 似乎不支持此命令(github issue 1issue 2)。

amazon-web-services amazon-s3 aws-cli google-cloud-composer
1个回答
0
投票

要在 Cloud Composer 上安装 AWS CLI,您可以使用以下步骤:

  1. 创建一个新的 Airflow DAG 并添加一个 BashOperator 任务。
  2. 在 BashOperator 任务中,使用以下命令安装 AWS CLI:
pip install awscli
  1. 使用您的 AWS 凭证配置 AWS CLI。您可以通过将以下代码添加到 BashOperator 任务来完成此操作:
aws configure set aws_access_key_id YOUR_AWS_ACCESS_KEY_ID
aws configure set aws_secret_access_key YOUR_AWS_SECRET_ACCESS_KEY
  1. 配置 AWS CLI 以使用您选择的 AWS 区域。您可以通过将以下代码添加到 BashOperator 任务来完成此操作:
aws configure set default.region AWS_REGION

AWS_REGION
替换为支持的 AWS 区域的名称。

  1. 保存并运行 DAG。

DAG 运行后,AWS CLI 将安装在 Cloud Composer 环境中的所有 Airflow 工作线程节点上。然后,您可以在 Airflow DAG 中使用 AWS CLI 与 AWS 服务交互。

请注意,您需要在 Cloud Composer 环境中安装

pip
Python 软件包才能使用上述步骤。您可以使用以下命令安装
pip

sudo apt install python-pip

以下是完整 Airflow DAG 的示例,它安装 AWS CLI 并使用您的 AWS 凭证进行配置:

from airflow import DAG
from airflow.operators.bash_operator import BashOperator

default_args = {
    'start_date': airflow.utils.dates.days_ago(2),
    'retries': 1
}

dag = DAG('install_aws_cli', default_args=default_args)

install_aws_cli = BashOperator(
    task_id='install_aws_cli',
    bash_command='pip install awscli',
    dag=dag
)

configure_aws_cli = BashOperator(
    task_id='configure_aws_cli',
    bash_command=[
        'aws configure set aws_access_key_id YOUR_AWS_ACCESS_KEY_ID',
        'aws configure set aws_secret_access_key YOUR_AWS_SECRET_ACCESS_KEY',
        'aws configure set default.region AWS_REGION'
    ],
    dag=dag
)

install_aws_cli >> configure_aws_cli

保存 DAG 后,您可以使用以下命令运行它:

airflow run install_aws_cli

DAG 运行后,AWS CLI 将安装在 Cloud Composer 环境中的所有 Airflow 工作线程节点上。然后,您可以在 Airflow DAG 中使用 AWS CLI 与 AWS 服务交互。

© www.soinside.com 2019 - 2024. All rights reserved.