【问题标题】:Moving Files from Azure blob storage to Google cloud storage bucket将文件从 Azure blob 存储移动到 Google 云存储桶
【发布时间】:2021-11-28 11:55:31
【问题描述】:

大家好,我很乐意得到您的帮助。我的任务是将文件从 azure 存储移动到谷歌云存储桶,文件传输需要由触发器完成,每当有新文件上传到 azure 存储时,一个监听 blob 触发器的函数,将其传输到 GCP 存储桶,我做了一个演示,并且能够在azure中获得在不同存储帐户之间移动文件的功能,但是该功能无法将文件传输到谷歌云存储桶,我不排除一种方法来进行文件传输从谷歌存储到天蓝色存储,如果有人有 GCP 方面的好方法。我在这里添加了我的函数从 azure 运行的代码(在 powershell 中编写)。 有没有人有这样做的好方法,或者他以前做过并且可以提供帮助?

# Input bindings are passed in via param block.
param([byte[]] $InputBlob, $TriggerMetadata)

# Write out the blob name and size to the information log.
Write-Host "PowerShell Blob trigger function Processed blob! Name: $($TriggerMetadata.Name) Size: $($InputBlob.Length) bytes"

# Define source, source contains the blob newly uploaded(with file name)
$SourceURI = "https://ContainerTEST.blob.core.windows.net/"
$SourceBlobContainer = "testcontainer/"
$SourceSASToken = "d,xmsetgijazjss23139sclzxx@#@!skskkxazzzz"
$SourceFullPath = "$($SourceURI)$($SourceBlobContainer)$($TriggerMetadata.Name)$($SourceSASToken)"



# del azcopy.exe and download lastest version of azcopy
# del azcopy.exe

# Test if AzCopy.exe exists in current folder
$AzcoypFile = "azcopy.exe"
$AzCopyExists = Test-Path $AzcoypFile
Write-Host "AzCopy exists:" $AzCopyExists

# Download AzCopy.zip and unzip if it doesn't exist
If ($AzCopyExists -eq $False)
{
    Write-Host "AzCopy not found. Downloading..."
    
    #Download AzCopy
    Invoke-WebRequest -Uri "https://aka.ms/downloadazcopy-v10-windows" -OutFile AzCopy.zip -UseBasicParsing
 
    #unzip azcopy
    write-host "unzip azcopy.zip"
    Expand-Archive ./AzCopy.zip ./AzCopy -Force

    # Copy AzCopy to current dir
    Get-ChildItem ./AzCopy/*/azcopy.exe | Copy-Item -Destination "./AzCopy.exe"
}

$googlecloudpath = "https://console.cloud.google.com/storage/browser/GoogleBucketTEST"


Write-Host "copy blob from  $($SourceFullPath) to  $($googlecloudpath)"
./azcopy.exe copy $SourceFullPath $googlecloudpath --recursive=true 

【问题讨论】:

  • AzCopy 无法帮助您执行此操作,因为它仅支持 authentication 的 Azure AD 和 SAS
  • 还有其他方法可以通过触发器将文件复制到 GCP 吗?
  • 您必须使用 Azure API 读取 Azure 容器 blob,并使用 Google API 将对象写入 Google Cloud Storage,并为每个云使用正确的授权。 Google Cloud 中的 PowerShell 支持非常有限。您需要将语言切换到 C#/.NET 或 Python 等,除非您可以将低级 PowerShell 直接写入 REST API。
  • 嗨,我现在正在制作一个基于 blob 触发器的 azure 函数,用于将文件复制到 Python 中的 Google 云存储,我有点挣扎,你能给我一个示例代码吗?我可以用吗?

标签: google-cloud-functions azure-functions google-cloud-storage azure-blob-storage google-cloud-pubsub


【解决方案1】:

找到一篇文章可以帮助您将 azure blob 文件移动或复制到 Google 云存储桶 使用将数据从 Azure Blob 导入 GCP 存储桶的 GCP 数据传输服务。

第1步:使用Transfer Service Cloud选项,填写Azure存储的存储账户、容器名称和SAS访问令牌。

第 2 步:选择要从 Azure 存储复制数据的 Google 存储桶。

第 3 步:选择需要多久将数据从 Azure 存储复制到 GCP 存储的计划,然后单击创建将创建作业。

第 4 步:监控计划作业。

参考:https://amald-nav.medium.com/use-gcp-data-transfer-service-import-data-from-azure-blob-f2469f42a5c2

【讨论】:

  • 您好,我已经尝试过此解决方案,但计划作业至少只能运行一小时,我需要像每分钟(或触发器)一样更频繁地完成复制文件。
猜你喜欢
  • 2017-08-18
  • 2018-01-25
  • 2019-09-22
  • 2016-02-10
  • 2017-01-19
  • 2022-10-04
  • 2018-09-25
  • 2019-10-14
  • 2016-10-16
相关资源
最近更新 更多