You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻找可实现AWS S3存储桶到Azure Blob存储数据传输的Apache Airflow Operator

AWS S3 to Azure Blob Storage Transfer in Apache Airflow

Great question! Let's break down how to handle this file transfer scenario in Airflow—since there isn't a single dedicated Operator (like AzureBlobStorageToGCSOperator) that directly moves data from S3 to Azure Blob Storage out of the box, but there are several straightforward workarounds that match your ADF Copy Activity use case.

Option 1: Combine Existing Operators (Two-Step Transfer)

You can chain Airflow's built-in hooks/operators to first pull files from S3 to the Airflow worker's local filesystem, then push them up to Azure Blob Storage. This is the most direct DIY approach:

  1. Use S3Hook to download files from S3 to a local temp path
  2. Use WasbHook to upload the local files to Azure Blob

Here's a complete code example implementing this flow:

from airflow import DAG
from airflow.providers.amazon.aws.hooks.s3 import S3Hook
from airflow.providers.microsoft.azure.hooks.wasb import WasbHook
from airflow.operators.python import PythonOperator
from datetime import datetime

def transfer_s3_to_blob():
    # Initialize connection hooks (ensure these are configured in Airflow UI)
    s3_hook = S3Hook(aws_conn_id="aws_s3_connection")
    wasb_hook = WasbHook(wasb_conn_id="azure_blob_connection")
    
    # Download file from S3 to local temporary path
    local_temp_file = "/tmp/s3_transfer_temp.csv"
    s3_hook.download_file(
        key="source/path/your_file.csv",
        bucket_name="your-source-s3-bucket",
        local_path=local_temp_file
    )
    
    # Upload local file to Azure Blob Storage
    wasb_hook.load_file(
        file_path=local_temp_file,
        container_name="your-azure-container",
        blob_name="destination/path/your_file.csv",
        overwrite=True
    )

with DAG(
    "s3_to_azure_blob_transfer",
    schedule_interval=None,
    start_date=datetime(2024, 1, 1),
    catchup=False
) as dag:
    execute_transfer = PythonOperator(
        task_id="transfer_s3_to_azure_blob",
        python_callable=transfer_s3_to_blob
    )

execute_transfer

Option 2: Trigger Azure Data Factory (ADF) via Airflow

Since you already know ADF's Copy Activity handles this natively, you can use Airflow's AzureDataFactoryRunPipelineOperator to trigger an existing ADF pipeline (configured with linked services for S3 and Azure Blob). This is ideal if you already have ADF set up:

from airflow import DAG
from airflow.providers.microsoft.azure.operators.azure_data_factory import AzureDataFactoryRunPipelineOperator
from datetime import datetime

with DAG(
    "trigger_adf_s3_to_blob_pipeline",
    schedule_interval=None,
    start_date=datetime(2024, 1, 1),
    catchup=False
) as dag:
    run_adf_pipeline = AzureDataFactoryRunPipelineOperator(
        task_id="execute_s3_to_blob_copy",
        azure_data_factory_conn_id="azure_adf_connection",
        pipeline_name="YourS3ToBlobCopyPipeline",
        parameters={}  # Add pipeline parameters if needed
    )

run_adf_pipeline

Option 3: Build a Reusable Custom Operator

If you need this functionality across multiple DAGs, you can create a custom Operator that wraps the S3-to-Blob logic. This lets you reuse it just like the cross-cloud operators you mentioned. A basic template would:

  • Inherit from Airflow's BaseOperator
  • Initialize both S3 and Azure Blob hooks in the constructor
  • Implement the execute() method to handle the end-to-end transfer

Key Notes

  • Ensure your Airflow connections (AWS S3, Azure Blob, ADF) are properly configured in the Airflow UI with the right credentials.
  • For large files, consider chunked transfers or verifying your Airflow worker has enough disk space for temporary files.
  • Make sure you have the required provider packages installed: apache-airflow-providers-amazon and apache-airflow-providers-microsoft-azure.

内容的提问来源于stack exchange,提问作者Anil Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.01 02:02:35