我有下面定义的 Azure 函数注释。Blob 触发器从存储帐户进程中读取数据,并使用返回值将输出写入绑定中定义的“文件名”.json 的 Blob 容器。
这是预期的;然而,当将数据写入blob容器时。输出绑定检查带有“GET”请求的Blob是否存在,并在发出“PUT”请求之前最终进入404响应代码。这在Application Insights中被捕获。
有什么方法可以替代这种行为吗?此处显示日志分析的屏幕截图
函数绑定
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
}
}
功能。杰伦
json prettyprint-override">{
"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
绑定完成。虽然这是可能的,但它并没有真正起到任何实际作用。预期的404真的那么糟糕吗?
至于“为什么”它会发生,我的猜测是它是在检查特定 Blob
所需的现有容器或其他资源时发生的。仅根据我们所知道的情况,很难说它究竟在哪里发生,但是在WebJobs SDK中看到的评论专门调用ExistsAsync
来限制预期的40倍状态代码。如果潜入实现 ExistsAsync
的 Microsoft.Azure.Storage.Blob
存储库,您可以看到 ExistsImpl
需要 404 状态代码来确定资源是否存在。
要绕过404,您可以自己使用< code>BlobClient,直接创建您需要创建的内容,而无需检查现有资源。不过,一个公平的警告是,这最终可能会导致比预期的404更多的问题(tbh,404几乎不会导致任何问题,因为它正在由SDK和存储库处理)。
我有一个EventHubTrighted函数app。下面是方法签名的代码示例: @functionname(“foo”)@storageaccount(“foostorageRead”)public HttpResponseMessage run(@httptrigger(name=“req”,methods={httpmethod.post},authLevel=authorizationlev
我想使用Python中的Azure函数将JSON数据作为. json文件上传到Azure存储Blob。 因为我使用的是Azure函数,而不是实际的服务器,所以我不想(也可能无法)在本地内存中创建一个临时文件,并使用Azure blob存储客户端库v2将该文件上载到Azure blob存储。1对于Python(这里有参考链接)。因此,我想为Azure函数使用输出blob存储绑定(这里有参考链接)。
我正在创建多个 Azure 函数(HTTP 触发器)来从 blob 存储中获取内容,获取单个 blob 的几个元数据值,并获取特定 blob 类型的所有元数据属性。 我对使用绑定与使用blob存储的rest API与azure-storage sdk感到困惑。 创建azure函数时使用哪种方法最好?如果您能给我指出一些此类示例留档,那也会很有帮助。谢谢你。
我在学习http://martinabbott.azurewebsites.net/2016/06/11/fun-with-azure-functions-and-the-emotion-api/ 我在集成选项卡中有名为“图片”的Blob触发器存储容器。myblob路径是“图片/{名称}”没有定义输入。输出是DocumentDB。我已经验证访问密钥是正确的。 我想知道错误的原因是什么?与 Azur
我在 Azure blob 存储中有一个 csv 文件,我想打开该文件并根据用户输入获取某些数据。我有两个问题: 1)空AzureWebJobStorage值在local.settings.json 我尝试使用AzureWebJobsStorage输入绑定,但值似乎为空。我不知道如何在local.settings.json中编辑什么值。因此,得到这个错误: 已执行Functions.HttpExa
我找到了这个代码示例,用于向Blob存储添加连接并向文件写入一些文本,但连接信息取决于包含连接字符串的环境变量名。我不知道如何提供一个包含连接字符串的密钥库秘密引用,而不是必须使用环境变量名和连接字符串。 调用的函数如下所示: 这样做的目的是只对连接字符串的更改使用我的密钥存储库机密,并将连接字符串排除在配置文件之外。
我对Azure函数和CosmosDB输出绑定有问题。我现在拥有的是:我从一个Cosmos DB容器中读取数据,处理一些东西,然后将结果输出回同一个DB但不同的容器。我正在使用VSCode和python,并测试了其他输出(blob、HTTP响应等),所有这些都正常工作,所以我认为这是CosmosDB的问题。 主要功能定义如下: function.json输出绑定如下: 请注意,我使用和我的扩展手动安
我已经定义了一个Azure函数,它使用Azure存储队列触发器和Blob输入绑定。我已经为队列触发器准备了一个POCO,但是如何在blob输入绑定中将该POCO与绑定表达式一起使用呢? 建筑: Azure功能2。x POCO: Azure功能: 队列消息: 错误消息: 系统私有的CoreLib:执行函数profileImageUpload时发生异常。微软蔚蓝色的WebJobs。主机:异常绑定参数“