#file-storage #azure-service-fabric
#хранилище файлов #azure-service-fabric
Вопрос:
Я развертываю API без состояния, который имеет метод загрузки файлов. Пользователь API загружает файл, и файл сохраняется в файловой системе (сетевой ресурс), а метаданные хранятся в базе данных.
Однако, когда он развертывается в среде Azure, я действительно не знаю, как настроить службу для доступа к файлам Azure, поддерживающим SMB. Похоже, что сетка Service Fabric поддерживает драйвер файлового тома, но я не использую service mesh. Просто старая добрая Service Fabric.
Итак, не могли бы вы порекомендовать способ, позволяющий не переписывать мой файловый ввод-вывод, чтобы он работал в Azure с файловым хранилищем.
Спасибо
Ответ №1:
Вы можете создать сценарий подключения к общему файловому ресурсу. Используйте участника службы для доступа к учетным данным хранилища или укажите их в конфигурации. Запустите сценарий в качестве точки входа в службу настройки. Убедитесь, что сценарий выполняется идемпотентно.
$resourceGroupName = "<your-resource-group-name>"
$storageAccountName = "<your-storage-account-name>"
# These commands require you to be logged into your Azure account, run Login-AzAccount if you haven't
# already logged in.
$storageAccount = Get-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccountName
$storageAccountKeys = Get-AzStorageAccountKey -ResourceGroupName $resourceGroupName -Name $storageAccountName
# The cmdkey utility is a command-line (rather than PowerShell) tool. We use Invoke-Expression to allow us to
# consume the appropriate values from the storage account variables. The value given to the add parameter of the
# cmdkey utility is the host address for the storage account, <storage-account>.file.core.windows.net for Azure
# Public Regions. $storageAccount.Context.FileEndpoint is used because non-Public Azure regions, such as sovereign
# clouds or Azure Stack deployments, will have different hosts for Azure file shares (and other storage resources).
Invoke-Expression -Command ("cmdkey /add:$([System.Uri]::new($storageAccount.Context.FileEndPoint).Host) " `
"/user:AZURE$($storageAccount.StorageAccountName) /pass:$($storageAccountKeys[0].Value)")