【问题标题】:Unable to get BlobTrigger for my Azure Function to work?无法让 BlobTrigger 让我的 Azure 函数正常工作?
【发布时间】:2020-12-10 08:26:01
【问题描述】:

我有一个名为 invoicestoragebfda 的存储帐户和一个名为 veninv_dev 的容器。我的函数应该在日志中打印触发该函数的 blob 的名称 + 大小。

Function.class

    @FunctionName("blobprocessing")
    @StorageAccount("invoicestoragebfda")
    public void blob(
      @BlobTrigger(name = "blob",
                   dataType = "binary",
                   path = "veninv-dev/{name}",
                   connection = "invoicestoragebfda") byte[] content,
      @BindingName("name") String filename,
      final ExecutionContext context
    ) {
      context.getLogger().info("Name: " + filename + " Size: " + content.length + " bytes");

Function.json

{
  "scriptFile" : "../veninv_dev-functions-1.0-SNAPSHOT.jar",
  "entryPoint" : "com.veninv_dev.veninv.blob",
  "bindings" : [ {
    "type" : "blobTrigger",
    "direction" : "in",
    "name" : "blob",
    "path" : "veninv-dev/{name}",
    "dataType" : "binary",
    "connection" : "invoicestoragebfda"
  } ]
}

但是,当我部署此函数并将文件上传到容器时,函数触发器未激活。存储帐户允许从所有网络访问。

我已经被这个问题困扰了很长时间,但我无法弄清楚我的 Function.class 和 Function.json 应该是什么样子才能完成这项工作。

【问题讨论】:

    标签: java azure-functions azure-blob-storage


    【解决方案1】:

    也许问题是您的连接字符串为空或错误。您在本地运行时可能会使用存储模拟器,因此在将您的功能部署到 Azure 后,您会失去与存储帐户的连接。

    在门户中,您可以导航到 configuration 并检查 app 设置 的值,在您的情况下命名为 invoicestoragebfda。如果您没有此应用设置,请添加一个并将连接字符串写入值。在我的例子中,特定的应用设置名称是 AzureWebJobsStorage。

    要获取连接字符串,请转到您的存储帐户,导航到 访问密钥,将 key1 下的连接字符串复制到 应用设置 .

    有什么问题可以联系我。

    【讨论】:

    • 我查了一下,key1连接字符串和AzureWebJobsStorage值是一样的。
    • 我又看了一下,在Function.class里面发现connection="invoicestoragebfda"应该改成connection="Storage",因为connection变量是指Application Setting(命名为"AzureWebJobsStorage “ 为了我)。现在一切正常!
    • 如果您认为我的回答对您有帮助,请接受它以帮助更多人。谢谢~
    猜你喜欢
    • 2019-02-08
    • 2019-08-11
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多