Получить ключ учетной записи хранилища Azure с помощью интерфейса командной строки Azure - PullRequest
0 голосов
/ 05 июля 2019

В своем конвейере выпуска я использую интерфейс командной строки Azure для передачи файлов сборки в большой двоичный объект хранилища Azure:

call az storage blob upload-batch --source "$(System.DefaultWorkingDirectory)/_ClientWeb-Build-CI/ShellArtifact/out/build" --destination "$web" --account-key "****QxjclDGftOY/agnqUDzwNe/gOIAzsQ==" --account-name "*****estx"

Это работает, но я хочу получить account-key динамически.

Когда я использую:

az storage account keys list -g CustomersV2 -n ****estx

Я получаю массив с 2 объектами, оба из которых содержат значение ключа:

[
    {
    "keyName": "key1",
    "permissions": "Full",
    "value": "f/eybpcl*****************Vm9uT1PwFC1D82QxjclDGftOY/agnqUDzwNe/gOIAzsQ=="
    },
    {
    "keyName": "key2",
    "permissions": "Full",
    "value": "bNM**********L6OxAemK1U2oudW5WGRQW++/bzD6jVw=="
    }
]

Как использовать один из двухключи в моей upload-batch команде?

Ответы [ 2 ]

0 голосов
/ 05 июля 2019

Я создал задачу Azure Powershell (версия 4), которая выполняет:

az login -u **** -p ****
Write-Host "##vso[task.setvariable variable=storageKey;]az storage account keys list -g ***** -n ***** --query [0].value -o tsv"
$key = az storage account keys list -g ***** -n **** --query [0].value -o tsv
Write-Host "##vso[task.setvariable variable=something;]$key"

Затем я могу использовать переменную something в своей задаче Azure CLI:

call az storage blob upload-batch --source "$(System.DefaultWorkingDirectory)/_ClientWeb-Build-CI/ShellArtifact/out/build" --destination "$web" --account-key $(something) --account-name "*****"

Иэто работает.Вам, вероятно, нужно будет поместить -u и -p в переменную.

@ Чарльз большое спасибо за эту строку (az storage account keys list -g **** -n ****estx --query [0].value -o tsv)!

0 голосов
/ 05 июля 2019

Для вашей проблемы, если вы просто хотите, например, один из двух ключей, первый. Вы можете установить переменную с ключом в качестве значения следующим образом:

key=$(az storage account keys list -g CustomersV2 -n ****estx --query [0].value -o tsv)

А затем используйте переменную key в другой команде, например:

call az storage blob upload-batch --source "$(System.DefaultWorkingDirectory)/_ClientWeb-Build-CI/ShellArtifact/out/build" --destination "$web" --account-key $key --account-name "*****estx"

Или вы можете просто поместить команду, которая получает ключ в другую команду, прямо так:

call az storage blob upload-batch --source "$(System.DefaultWorkingDirectory)/_ClientWeb-Build-CI/ShellArtifact/out/build" --destination "$web" --account-key $(az storage account keys list -g CustomersV2 -n ****estx --query [0].value -o tsv) --account-name "*****estx"

Обновление

Согласно тому, что вы сказали, кажется, вы запускаете команду в командной строке Windows, она отличается от оболочки Linux и PowerShell. Вы не можете установить переменную среды со значением, которое выводится командой. Вы можете сделать это так:

az storage account keys list -g CustomersV2 -n ****estx --query [0].value -o tsv > key.txt
set /P key=<key.txt
az storage blob upload-batch --source "$(System.DefaultWorkingDirectory)/_ClientWeb-Build-CI/ShellArtifact/out/build" --destination "$web" --account-key %key% --account-name "*****estx"

И кажется, что вы просто можете заключить в кавычки переменную окружения как% variable_name%, поэтому кажется, что это неправильный способ использования "$web" в вашей команде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...