Python 如何创建DAG以将文件从一个S3复制到另一个S3存储桶

Python 如何创建DAG以将文件从一个S3复制到另一个S3存储桶,python,python-3.x,amazon-s3,airflow,airflow-scheduler,Python,Python 3.x,Amazon S3,Airflow,Airflow Scheduler,我正在尝试使用python创建dag,以便将一个文件从一个S3存储桶复制到另一个S3存储桶 我的代码 from airflow import DAG from datetime import datetime, timedelta from utils import FAILURE_EMAILS from airflow.providers.amazon.aws.operators.s3_copy_object import S3CopyObjectOperator default_args

我正在尝试使用python创建dag,以便将一个文件从一个S3存储桶复制到另一个S3存储桶

我的代码

from airflow import DAG
from datetime import datetime, timedelta
from utils import FAILURE_EMAILS

from airflow.providers.amazon.aws.operators.s3_copy_object import S3CopyObjectOperator
default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'start_date': datetime(2020, 1, 1),
    'email': FAILURE_EMAILS,
    'email_on_failure': False,
    'email_on_retry': False,
    'retries': 0,
    'retry_delay': timedelta(minutes=5)
}

dag = DAG(
    'S3_COPY_S3',
    default_args=default_args,
    catchup=False,
    schedule_interval=None,
    max_active_runs=1
)

copy_step = S3CopyObjectOperator(
   source_bucket_key='source_file',
   dest_bucket_key='dest_file',
   aws_conn_id='aws_connection_id',
   source_bucket_name='source-bucket',
   dest_bucket_name='dest-bucket',
   dag=dag
)

这是正确的吗?如果您提供的值被替换为正确的bucket名称和s3键,那么您是否可以进行验证,这是您唯一缺少S3CopyObjectOperator任务id的地方


实例化运算符时,需要在关联DAG的上下文中提供唯一的任务id。

Alan Ma是正确的。基于文档(如前所述,源_bucket _key等的字符串只是占位符,您需要在底部的新行中添加“copy _step”,否则您只定义了一个任务,但不会运行它)。另外,由于您已将“计划间隔”设置为“无”,我假定它是由另一个dag从外部触发的。