- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 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/
我是一名优秀的程序员,十分优秀!