Как писать файлы с приложением Azure Function в Powershell - PullRequest
1 голос
/ 04 февраля 2020

Я работаю с функциями PowerShell и Azure, которые являются новыми для меня, но это выбор, с которым мне было поручено работать.

То, что я действительно хочу сделать это так:

Invoke-RestMethod -Method GET -Uri $uri -Headers $headers -Body $body -OutFile $outfile -UseBasicParsing -DisableKeepAlive

Временно напишите ответ REST на $outfile, а затем, через мгновение, в сценарии я загружу файл через FTP в другое место, а затем больше не понадобится

Конечно, это прекрасно работает на местном уровне. Но в Azure я понимаю, что файл не может быть найден в пути $outfile. В любом случае, он не должен пытаться найти его там, но я могу только догадываться, что у меня фактически нет прав на запись в эту файловую систему.

Так что, если вы знаете способ для меня написать временную файл здесь, это было бы предпочтительным!

В противном случае, с помощью приложения-функции было сгенерировано некоторое хранилище больших двоичных объектов, и у меня есть переменная окружения AzureWebJobsStorage с именем учетной записи, ключом и т. д. c, для этого хранилища. Поэтому, возможно, я смогу записать туда файлы и затем прочитать их обратно.

Но я нигде не могу найти документацию о том, как это сделать в PowerShell. Существует много разговоров о переменной AzureWebJobsStorage, но я не нашел нигде, где она фактически использовалась, с примером того, как читать и писать в PowerShell. Опять же, потому что я просто очень плохо знаком с языком.

Любая помощь будет принята с благодарностью. Спасибо!

1 Ответ

2 голосов
/ 04 февраля 2020

Местоположение, возвращаемое командлетом New-TemporaryFile, доступно для записи, поэтому вы можете сделать это:

$tempFile = New-TemporaryFile
Invoke-RestMethod -Method GET -Uri $uri -Headers $headers -Body $body -OutFile $tempFile -UseBasicParsing -DisableKeepAlive
...
Remove-Item $tempFile

Обратите внимание, что этот временный объект гарантированно будет доступен только в контексте одного и того же вызова функции. Другие вызовы функций могут быть отправлены другим работникам, и этот файл больше не будет доступен.

Если вы хотите поделиться файлом между вызовами, вы можете сохранить его в D:\home\data, но затем имейте в виду, что это местоположение является общим для работников, поэтому вам может потребоваться обработка одновременного доступа и т. д. c. Вы также можете получить доступ к учетной записи хранения напрямую, используя командлеты Az.Storage . Переменная AzureWebJobsStorage содержит строку подключения, которую можно передать в New-AzStorageContext, а затем вы можете сохранить свои данные в BLOB-объекте (примеры вы найдете в https://docs.microsoft.com/en-us/powershell/module/az.storage).

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