【发布时间】: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