【问题标题】:Azure Powershell Function Append to Blob using Push-OutputbindingAzure Powershell 函数使用推送输出绑定附加到 Blob
【发布时间】:2021-01-03 16:15:42
【问题描述】:

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

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

这会将我需要的数据写入 blob - 太棒了!但问题是每次函数运行时都会覆盖 blob 内容。我看不到如何让 Push-OutputBinding cmdlet 将数据附加到 blob 中,而不是“设置”它。我尝试设置 -Clobber 开关,但似乎没有任何区别。

绑定似乎是一种与 Blob 存储交互的好方法,而无需引入更多代码来实例化更完整的客户端会话,我希望这是可能的吗?不胜感激。

【问题讨论】:

    标签: azure powershell azure-functions


    【解决方案1】:

    我有理由相信,在 powershell 和 azure 函数的输出绑定中,没有本地方法可以附加到 blob,因此您必须为此编写代码(另外,我认为附加到block blob是下载内容并在本地追加并重新上传,但我不确定这个)。

    【讨论】:

    • 明白。感谢您的澄清。
    【解决方案2】:

    正如 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)
    

    【讨论】:

    • 不错的解决方案。很有帮助!
    • wdym "你不需要在本地下载内容" - 当你下载它时,大声笑。您不必将其保存到文件中并在内存中执行此操作-当然。但你必须下载它。
    • 是的,它会下载到内存中。我的意思是“您不需要在本地下载内容”作为文件。我会编辑它。
    【解决方案3】:

    使用 powershell 命令 Set-AzStorageBlobContent 创建一个追加 blob 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)
    

    【讨论】:

    • 您在解决方案的第一部分中提到使用 Set-AzStorageBlobContent,但该命令行开关未出现在代码示例中。您的示例中是否缺少代码?
    猜你喜欢
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-14
    相关资源
    最近更新 更多