gpt4 book ai didi

azure - 如何在Azure函数输出绑定(bind)中禁用Blob存在检查

转载 作者:行者123 更新时间:2023-12-03 02:32:26 26 4
gpt4 key购买 nike

我的 Azure 函数注释定义如下。 Blob 触发器从存储帐户进程读取数据,并使用返回值将输出写入绑定(bind)中定义的“filename”.json 的 Blob 容器。

这按预期工作;但是,将数据写入 blob 容器时。输出绑定(bind)通过“GET”请求检查 Blob 是否存在,并最终在发出“PUT”请求之前进入 404 响应代码。这是在 Application Insights 中捕获的。

有什么方法可以覆盖这种行为吗? Screen shot of Log analytics here

函数绑定(bind)

public class ProcessZipFiles2Cosmos {

@FunctionName("ProcessZipFiles2Cosmos")
@StorageAccount("blobStorageAccount")
@BlobOutput(name = "blob_redacted_json", path = "nonpii/{filename}.json")
public static String run(
@BlobTrigger(name = "files", dataType = "binary", path = "transactedreturn/{name}", connection = "blobStorageAccount") byte[] content,
@BindingName("name") String filename,
@CosmosDBOutput(name = "cosmos_transacted", databaseName = "tax-return-data-ops", collectionName = "TransactedReturns",
connectionStringSetting = "AzureCosmosDBConnection") OutputBinding<String> cosmosItem,
final ExecutionContext context) {

// function body
}
}

FUNCTION.JSON

{
"scriptFile":"../transactedreturn-1.0.0-SNAPSHOT.jar",
"entryPoint":"com.hrblock.clzconverter.ProcessZipFiles2Cosmos.run",
"bindings":[
{
"type":"blobTrigger",
"direction":"in",
"name":"files",
"path":"transactedreturn/{name}",
"dataType":"binary",
"connection":"blobStorageAccount"
},
{
"type":"cosmosDB",
"direction":"out",
"name":"cosmos_transacted",
"databaseName":"tax-return-data-ops",
"connectionStringSetting":"AzureCosmosDBConnection",
"collectionName":"TransactedReturns"
},
{
"type":"blob",
"direction":"out",
"name":"$return",
"path":"nonpii/{filename}.json",
"connection":"blobStorageAccount"
}
]
}

最佳答案

当你说“覆盖此行为”时,我认为你想规避“存在”检查,这最终导致 404(正如我所见),由 Blob 绑定(bind)完成。虽然这是可能的,但它并没有真正达到任何真正的目的。 预期的 404 真的那么糟糕吗?

至于“为什么”会发生这种情况,我的猜测是,它是在检查特定 Blob 所需的现有容器或其他资源时发生的。仅凭我们所知,很难判断它到底发生在哪里,但看到的评论in the WebJobs SDK特别调用 ExistsAsync 来限制预期的 40x 状态代码。如果深入研究实现 ExistsAsync 的 Microsoft.Azure.Storage.Blob 存储库,您可以看到 ExistsImpl expecting a 404 status code判断资源是否存在。

要规避 404,您也许可以使用 BlobClient您自己,直接继续创建您需要创建的内容,无需检查现有资源。不过,这是一个公平的警告,这最终可能会导致比预期的 404 多得多的问题(而且说实话,404 几乎不会引起任何问题,因为它是由 SDK 和存储库处理的)。

关于azure - 如何在Azure函数输出绑定(bind)中禁用Blob存在检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64546302/

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