# #google-cloud-functions #azure-functions #google-cloud-storage #azure-blob-storage #google-cloud-pubsub
Вопрос:
Привет, ребята, я буду рад получить вашу помощь. у меня есть задача по перемещению файлов из хранилища azure в хранилище Google cloud, передача файлов должна выполняться с помощью триггера, всякий раз, когда новый файл загружается в хранилище azure, функция, которая прослушивает триггер blob, передает его в хранилище GCP, я провел демонстрацию и смог получить функцию для перемещения файлов между различными учетными записями хранилища в azure, но функция не может перенести файлы в хранилище Google cloud, я не исключаю способ передачи файлов из хранилища google в хранилище 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
Комментарии:
1. AzCopy не поможет вам в этом, так как он поддерживает только Azure AD и SAS для проверки подлинности
2. Есть ли другой способ, которым я могу скопировать файлы с помощью триггера в GCP?
3. Вы должны прочитать большой двоичный объект контейнера Azure с помощью API Azure и записать объект в облачное хранилище Google с помощью API Google и использовать правильную авторизацию для каждого облака. Поддержка PowerShell в Google Cloud очень ограничена. Вам нужно будет переключить языки на C#/.NET, Python и т. Д., Если вы не можете написать низкоуровневый PowerShell непосредственно в API REST.
4. Привет , я сейчас работаю над созданием функции из azure, которая основана на триггере blob-объектов для копирования файлов в облачное хранилище Google на Python, я немного затрудняюсь, можете ли вы дать мне пример кода, который я могу использовать ?
5.cloud.google.com/storage/docs/reference/libraries и cloud.google.com/storage/docs/… и googleapis.dev/python/storage/latest/index.html
Ответ №1:
Нашел статью, которая может помочь вам переместить или скопировать файлы больших двоичных объектов azure в хранилище Google cloud, используя службу передачи данных GCP, которая будет импортировать данные из большого двоичного объекта Azure в хранилище GCP.
Шаг 1. Используйте опцию Облачная служба передачи и заполните учетную запись хранилища, имя контейнера и маркер доступа SAS хранилища azure.
Шаг 2. Выберите хранилище Google, в которое вы хотите скопировать данные из хранилища Azure.
Шаг 3.Выберите расписание того, как часто данные необходимо копировать в хранилище GCP из хранилища Azure, и нажмите кнопку Создать, чтобы создать задание.
Шаг 4: Контролируйте задание по расписанию.
Ссылка: https://amald-nav.medium.com/use-gcp-data-transfer-service-import-data-from-azure-blob-f2469f42a5c2
Комментарии:
1. Привет, я пробовал это решение, но задание по расписанию может выполняться как минимум один час, и мне нужно, чтобы копирование файлов выполнялось чаще, например, каждую минуту ( или триггер ) .