gpt4 book ai didi

azure - 如何使用 Azure Function 输出绑定(bind)更新 Azure 存储表中的行

转载 作者:行者123 更新时间:2023-12-03 06:18:59 25 4
gpt4 key购买 nike

我正在使用 Azure 函数来处理存储在 Azure 存储表中的数据。 Azure Function 是用 PowerShell 编写的,由计时器触发每分钟运行一次。每次运行时,它将获取前 10 个未处理的行,处理每一行,然后通过将字段“已处理”设置为 true 来将该行标记为已处理。但是,似乎通过使用输出绑定(bind)我无法更新行。

我尝试使用以下配置和代码更新行。

函数绑定(bind):

    {
"tableName": "tobeprocessed",
"connection": "ProcessStorage",
"name": "InProcessStorageTableBinding",
"type": "table",
"direction": "in"
},
{
"tableName": "tobeprocessed",
"connection": "ProcessStorage",
"name": "OutProcessStorageTableBinding",
"type": "table",
"direction": "out"
}

函数代码:

param($Timer, $InProcessStorageTableBinding)

# Get first ten unprocessed rows
$InProcessStorageTableBinding | Where-Object { $_.Processed -eq $false } | Select-Object -First 10 | ForEach-Object {

# Logic for processing the values in the row
# left out for the sake of brevity

# Update the row
$_.Processed = $true
Push-OutputBinding -Name OutProcessStorageTableBinding -Value $_
}

Azure 门户上的 Azure Function 日志中显示的消息是:

The specified entity already exists. RequestId:da4224dd-0002-0071-0671-70a732000000 Time:2023-04-16T14:38:05.4671520Z

在互联网上搜索可能的解决方案时,我发现人们正在使用 PowerShell 模块 AzTable 中的 Get-AzStorageTableUpdate-AzTableRow 来更新 Azure 存储表中的行。但这样做需要更多的配置(证书、租户和应用程序 ID 等),因为似乎通过使用 Update-AzTableRow ,我们无法使用 out 绑定(bind)。绑定(bind)是 Azure Functions 的一个很好的功能,因为它负责幕后的所有身份验证和连接设置,因此如果可能的话,我真的更愿意使用 out 绑定(bind)。​​

更新:正如 Peter Bons 在下面的答案中指出的那样,有关 Azure Tables output bindings 的文档非常清楚,使用绑定(bind)不可能进行更新。

是否可以重用由绑定(bind)设置的连接(部分),以减少所需的管道,以便能够使用(例如)PowerShell 模块AzTable 更新一行?

这样我们就可以做这样的事情:

$table = Get-AzStorageTable –Connection $InProcessStorageTableBinding.Connection

$cloudTable = $table.CloudTable

$rowToProcess = Get-AzTableRow `
-table $cloudTable `
-customFilter <filter to retrieve row>

$rowToProcess.Processed = $true

$rowToProcess | Update-AzTableRow -table $cloudTable

最佳答案

恐怕你运气不好。 The docs证实你的怀疑:

This output binding only supports creating new entities in a table. If you need to update an existing entity from your function code, instead use an Azure Tables SDK directly.

关于azure - 如何使用 Azure Function 输出绑定(bind)更新 Azure 存储表中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76028571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com