如何使用 python 将 blob 从 azure 复制到 aws?

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

例如,我在 vs code 中复制此特定文件“container/dir/test1.txt”,但我无法找到不需要在本地或分块下载文件的解决方案...我尝试了 azure sas url 但那也以块的形式传输数据...因此占用内存

sas_url = generate_sas_url(blob_client, account_name, account_key)

s3_object = s3client.get_object(Bucket=aws_bucket_name, Key=blob_name)

file_content = s3_object['Body'].read()

amazon-web-services azure amazon-s3 cloud blob
1个回答
0
投票

如何使用 python 将 blob 从 azure 复制到 aws?

要将 Blob 从 Azure 复制到 Amazon Wed Service (AWS),我建议使用 Azure 数据工厂 将数据直接从 Azure Blob 存储复制到 AWS S3,以提高效率。

您可以使用以下 Python 代码将文件从 azure Blob Storage 复制到 AWS。

代码:

import os
from azure.storage.blob import BlobServiceClient
import boto3

# Azure Blob Storage credentials
azure_account_name = 'venkat32612'
azure_account_key = 'xxxxx'
azure_container_name = 'test'
azure_blob_name = "sample.txt'

#AWS S3 credentials
aws_access_key_id = '<your_aws_access_key_id>'
aws_secret_access_key = '<your_aws_secret_access_key>'
aws_bucket_name = '<your_aws_bucket_name>'
aws_object_key = '<your_aws_object_key>'

blob_service_client = BlobServiceClient(account_url=f"https://{azure_account_name}.blob.core.windows.net", credential=azure_account_key)
blob_client = blob_service_client.get_blob_client(container=azure_container_name, blob=azure_blob_name)

stream = blob_client.download_blob().content_as_bytes()

s3_client = boto3.client('s3', aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key)
s3_client.put_object(Bucket=aws_bucket_name, Key=aws_object_key, Body=stream)

上述代码使用

Azure Blob Storage client library for Python
将 blob 从 Azure 下载到流,然后使用
AWS SDK for Python (Boto3)
将流上传到 AWS S3。这样,您可以避免在本地或分块下载文件。但上面的代码将更容易地处理较小的文件。

参考:

从 Azure BLOB 到 AWS S3 的文件传输:分步指南 |通过 萨拉斯·钱德兰 | Litmus7 系统咨询 | Medium,作者:Sarath Chandran。

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