对Azure和Function Apps非常陌生。
我试图使用Powershell设置一个简单的Function应用程序,它需要从blob(简单的.txt文件)中读取内容,对其进行一些简单的处理,并将该文件的副本写入不同的blob中。
到目前为止,我已经在应用程序上设置了集成,我可以看到它提供了一个我可以使用的绑定。看起来是这样的。
{
"name": "inputBlob",
"direction": "in",
"type": "blob",
"path": "input/logs.txt",
"connection": "AzureWebJobsStorage"
}
我在脚本开头的powershell params中引用了这个绑定。
# Input bindings are passed in via param block.
param($Request, $TriggerMetadata, $inputBlob)
根据我的理解,这应该允许我连接到那个blob并与之交互。我不明白的是,应该怎么做?我试着用了一个看起来最合理的cmdlet。 Get-AzStorageBlobContent
比如说。
$blobContent = Get-AzStorageBlobContent -name $inputBlob
但是当我试图在http响应中返回这些内容时(这样我就可以检查是否已经读取),响应体是空的。
我猜想,我还需要添加更多的绑定来输出到 blobs?
例如,Set-AzStorageBlobContent cmdlet似乎只支持 "文件",但在我的案例中,在函数应用中,我没有文件,只有一个字符串或数组,那么我如何将这些内容推送到目标blob中?
如果有任何关于如何实现这一目标的建议,我将不胜感激。
在 $inputBlob
变量应该包含一个字节数组的blob数据,所以你可以做。
foreach ($value in $inputBlob) { ... }
或其他任何你会用一个字节数组做的事情。
如果你需要输出到一个blob,你需要添加一个输出绑定。
{
"name": "myOutputBlob",
"type": "blob",
"path": "output/data.txt",
"connection": "AzureWebJobsStorage",
"direction": "out"
}
并将数据从你的函数代码中推送到这个绑定。
Push-OutputBinding -Name myOutputBlob -Value 'my value'