Аутентификация учетной записи хранилища BLOB-объектов Azure в облаке с помощью модуля Runbook

В табличной модели AZURE ANALYSIS SERVICES (с уровнем совместимости 1400) я импортировал учетную запись хранилища BLOB-объектов в качестве источника данных. Тип аутентификации - это ключевой вид аутентификации. Ключ - это статический ключ.

Но при обновлении таблицы с помощью Runbook в учетной записи автоматизации (Cloud PowerShell) есть ли способ передать ключ / учетные данные, чтобы он мог пройти проверку подлинности?

В противном случае PowerShell выйдет из строя с сообщением ниже

The given credential is missing a required property. Data source kind: AzureBlobs. Authentication kind: Key. Property name: Key. The exception was raised by the IDbConnection interface.

Вот определение источника, скопированное из файла Model.bim:

 {
  "createOrReplace": {
    "object": {
      "database": "azureanalysisservicesdatabase",
      "dataSource": "OMSLogs"
    },
    "dataSource": {
      "type": "structured",
      "name": "OMSLogs",
      "connectionDetails": {
        "protocol": "azure-blobs",
        "address": {
          "account": "storage",
          "domain": "blob.core.windows.net"
        },
        "authentication": null,
        "query": null
      },
      "credential": {
        "AuthenticationKind": "Key",
        "kind": "AzureBlobs",
        "path": "https://storage.blob.core.windows.net/",
        "PrivacySetting": "Organizational"
      }
    }
  }
}

это код, который я запускал в PowerShell для обработки базы данных:

Invoke-ProcessASDatabase -databasename $DatabaseName -server $AnalysisServerName -RefreshType "Full" -Credential $SPCredential

person JSS Sravan Chandra    schedule 08.08.2019    source источник


Ответы (1)


Хорошо, я также столкнулся с аналогичной проблемой и нашел решение, добавьте Key в объект учетных данных:

"credential": {
    "AuthenticationKind": "Key",
    "kind": "AzureBlobs",
    "path": "https://storage.blob.core.windows.net/",
    "PrivacySetting": "Organizational",
    "Key": "<StorageAccountKey>"
  }

Это плохо документировано Microsoft, но у меня это сработало.

Обновление с помощью примера PowerShell:

Get-ChildItem -Filter "drop" -Recurse -Path $sourcePath -Directory | 
Get-ChildItem -recurse -filter *.asdatabase -file | ForEach-Object {
    $filename = $_.fullname
    $generatedFile = $buildPath + $_.BaseName + ".xmla"
    "Processing $filename"
    & $deploymentWizard $filename /o:$generatedFile

    # Have to add Blob Key now, as Deployment Wizard doesn't like 
    # adding the Key (bug maybe? Or DeloyWizard isn't up to date)
    $file = Get-Content $generatedFile -Raw | ConvertFrom-Json        
    $file.createOrReplace.database.model.dataSources | ForEach-Object {
        # Add Blob Key to credential object
        if ($_.name.StartsWith("AzureBlobs/")) {           
            $_.credential | Add-Member -Name "Key" -Value $storageKey -MemberType NoteProperty -Force
        }
    }
    $file = $file | ConvertTo-Json -Depth 32
    $file | Set-Content -Path $generatedFile -Encoding utf8
}
person Ollie F    schedule 28.08.2019
comment
Как добавить это в модуль Runbook? У меня такая же проблема. В модуле Runbook мы указываем учетные данные примерно так: $ _Credential = Get-AutomationPSCredential -Name ServicePrincipal Как ввести эту строку в модуль Runbook? - person GIZNAJ; 22.09.2020
comment
@GIZNAJ см. Выше Я добавил образец PowerShell того, как я добавляю свойство Key - person Ollie F; 24.09.2020
comment
У меня тоже есть обновление. Задача / расширение, развертывавшее AAS в Azure, не имело XMLA, и поэтому развертывание было плохим. По этой причине выполнение команды Process завершится ошибкой. Теперь, когда значения XMLA присутствуют в развертывании, мы больше не получаем ошибку, возникающую в этом потоке. Я добавил ключ, как вы и предложили, так что это беспроигрышный вариант для нас. - person GIZNAJ; 24.09.2020