从 Azure Blob 复制到 AWS S3 存储桶

Copy From Azure Blob to AWS S3 Bucket

我正在尝试编写一个 PowerShell 脚本,该脚本以递归方式从 Azure Blob 复制到 Amazon AWS S3 存储桶,但没有取得太大成功。

有人可以帮我吗?

$container_name = @("<ContainerItemName>")
$connection_string = 'DefaultEndpointsProtocol=https;AccountName=<AccountName>;AccountKey=<AccountKey>'

$storage_account = New-AzureStorageContext -ConnectionString $connection_string

$S3Bucket = "<BucketName>"

foreach ($container_item in $container_name)
{
    $blobs = Get-AzureStorageBlob -Container $container_item -Context $storage_account

    foreach ($blob in $blobs)
    {
        $item = Get-AzureStorageBlobContent -Container $container_item -Blob $blob.Name -Context $storage_account
        Write-S3Object -BucketName $S3Bucket -KeyPrefix $container_item\ -Folder $item -Force
    }
}

我没有玩过 AWS PowerShell Cmdlet(所以我可能是错的)但快速浏览一下他们的文档 here,我认为您需要先将 blob 保存在本地计算机上,然后然后在 Write-S3Object cmdlet -File 参数中指定该路径。

正在将 Azure Blob 下载到目录:

Get-AzureStorageBlobContent -Container containername -Blob blob -Destination C:\test\

假设 blob 的名称是 blob.png,将其上传到 S3:

Write-S3Object -BucketName $S3Bucket -KeyPrefix $container_item\ -File "C:\test\blob.png" -Force

一种选择是使用 Azure 存储数据移动库。您可以在此处下载示例代码:https://github.com/Azure/azure-storage-net-data-movement/tree/master/samples/S3ToAzureSample. Following article contains more information on Data movement library: https://azure.microsoft.com/en-us/blog/introducing-azure-storage-data-movement-library-preview-2/