Azure Powershell函数使用推送输出绑定追加到Blob

gev0vcfq  于 2022-11-17  发布在  Shell
关注(0)|答案(4)|浏览(107)

我创建了一个Azure Powershell函数,它需要将一些数据写入blob,因此我使用outputBlob绑定沿着:

Push-OutputBinding -Name <name> -Value <value>

这将我需要的数据写入blob -太棒了!但问题是每次函数运行时,它都会覆盖blob内容。我不知道如何让Push-OutputBinding cmdlet将数据追加到blob中,而不是“设置”它。我尝试过设置-Clobber开关,但似乎没有任何区别。
绑定似乎是一种与Blob存储交互的好方法,而不必拉入更多的代码来示例化一个更完整的客户端会话,我希望这是可能的。

00jrzges

00jrzges1#

我有理由相信,在powershell和azure函数的输出绑定中,没有原生的方法可以附加到blob,所以你必须为此编写代码(另外,我认为附加到块blob的唯一方法是下载内容,在本地附加,然后重新上传,但我不确定这一点)。

yvt65v4c

yvt65v4c2#

正如4c74356b41所述,在powershell中没有原生的方法来附加到blob。
但不需要将内容下载到本地文件中,可以使用$storageBlob.ICloudBlob.DownloadText()进行下载。
下面是我的测试代码,用于将“123456789”附加到Blob:

$connctionstring = ""
$container = ""
$blob = ""
$appendText = "123456789"

$blobContext = New-AzureStorageContext -ConnectionString $connctionstring
$storageBlob = Get-AzureStorageBlob -Blob $blob -Container $container -Context $blobContext 

$storageBlobContent = $storageBlob.ICloudBlob.DownloadText()

$storageBlobContent

$storageBlob.ICloudBlob.UploadText($storageBlobContent + $appendText)

zd287kbt

zd287kbt3#

使用powershell命令Set-AzStorageBlobContent创建blob类型为Append的附加blob

$storageAccountName = ""
$containerName= ""
$storageContext= ""
$blobName = ""
$appendText = "123456789"

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $AccountKey
$patchContainer = Get-AzStorageContainer -Name $containerName -Context $storageContext
$storageBlob = Get-AzStorageBlob -Blob $blobName -Container $containerName -Context $storageContext 
$patchLogBlob = Get-AzStorageBlob -Blob $blobName -Container $containerName -Context $storageContext                         
$patchLogBlob.ICloudBlob.AppendText($appendText)
vmdwslir

vmdwslir4#

看起来,既没有必要创建新的StorageContext,也没有必要获取新的存储blob,您所需要做的就是获取blob对象并正确调用它的接口方法。

相关问题