Как предоставить общую папку для службы без отслеживания состояния, работающей в кластере Azure Service Fabric?

Я развертываю API без сохранения состояния, который имеет метод загрузки файлов. Потребитель API загружает файл, и файл сохраняется в файловой системе (сетевом ресурсе), а метаданные сохраняются в базе данных.

Однако, когда он развернут в среде Azure, я действительно не знаю, как настроить службу, чтобы иметь доступ к файлам Azure, поддерживающим SMB. Сетка Service Fabric, похоже, поддерживает драйвер тома файлов, но я не использую сетку службы. Просто старый добрый Service Fabric.

Итак, не могли бы вы порекомендовать способ, которым не нужно переписывать мой файловый ввод-вывод, чтобы он работал в Azure с хранилищем файлов.

Спасибо


person Amar Singh    schedule 12.04.2019    source источник


Ответы (1)


Вы можете скрипт для подключения к общей папке. Используйте субъект-службу для доступа к учетным данным хранилища или поместите их в конфигурацию. Запустите сценарий как настроить точку входа службы. Убедитесь, что скрипт работает idempotent.

$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)")
person LoekD    schedule 12.04.2019