当前位置: 首页 > 知识库问答 >
问题:

使用Java的Azure函数——如何创建@BlobTrigger

傅鸿波
2023-03-14

我需要使用Java创建Azure函数BlobTrigger来监视我的存储容器中是否有新的和更新的blob。

使用以下代码尝试

import java.util.*;
import com.microsoft.azure.serverless.functions.annotation.*;
import com.microsoft.azure.serverless.functions.*;
import java.nio.file.*;
import java.io.*;
import java.net.URL;
import java.net.URLConnection;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import com.microsoft.azure.storage.*;
import com.microsoft.azure.storage.blob.*;

@FunctionName("testblobtrigger")
 public String testblobtrigger(@BlobTrigger(name = "test", path = "testcontainer/{name}") String content) {
     try {
         return String.format("Blob content : %s!", content);

     } catch (Exception e) {
         // Output the stack trace.
         e.printStackTrace();
         return "Access Error!";
     }
 }

执行时,它显示错误

存储绑定(blob/队列/表)必须具有非空连接。在方法上发现无效的存储绑定:

当添加连接字符串时,它正在工作

public String kafkablobtrigger(@BlobTrigger(name = "test", path = "testjavablobstorage/{name}",connection=storageConnectionString) String content) {

为什么我在使用blobtrigger时需要添加连接字符串?

在C#中,它在没有连接字符串的情况下工作:

public static void ProcessBlobContainer1([BlobTrigger("container1/{blobName}")] CloudBlockBlob blob, string blobName)
{
    ProcessBlob("container1", blobName, blob);
}

我没有看到任何Azure函数的Java示例@BlobTrigger。

共有1个答案

宗政天逸
2023-03-14

毕竟,< code>connection是触发器识别容器位置所必需的。

经过测试,我发现@Mikhail是对的。对于C#,如果忽略< code>connection,将使用默认值(在local.settings.json或portal的应用程序设置中)。但不幸的是,java没有相同的设置。

您可以在@FuncionName下方添加@StorageAccount(“YourStorageConnection”),因为这是另一种有效的选择方式。YourStorageConnection 在 local.settings.json 或门户的应用程序设置中的价值取决于您。

您可以按照本教程,使用mvn azure-function: add查找java的四个(Http/Blob/Queue/TimerTrigger)模板。

 类似资料:
  • 我想创建一个Azure功能与JavaSDK,但我有一些问题定义触发器,我的代码创建的函数应用程序是: 我想定义一个EventHub触发器,但我不知道怎么做,我看到我的函数对象有以下方法: 有效载荷格式是什么?还有别的办法吗? 问候维克多

  • 正在尝试使用CLI创建事件订阅。 使用门户,有七种不同的endpoint类型: Azure函数 Web Hook 存储队列 活动中心 混合连接 服务总线队列 服务总线主题 使用CLI,至少在留档中,只有三个可用: eventhub 杂交连接 servicebus队列 储藏库 网络钩子 如何创建指向Azure函数的事件订阅,就像在门户中完成的那样?我知道作为一种解决方案,我可以将该函数用作WebHo

  • 问题内容: 我有一个带几个参数的Python函数。在某些情况下,可以忽略其中一些参数。 这些参数通过是字符串,每个都有不同的含义。我可以选择要以任何组合形式传递的可选参数,这一点很重要。例如,或,,或,或所有它们(这些是我的选择)。 如果我可以重载该函数,那就太好了-但我读到Python不支持重载。我试图在列表中插入一些必需的int参数-并收到参数不匹配错误。 现在,我正在发送空字符串来代替前几个

  • 问题内容: 我正在尝试在Swift中构建Promises的基本实现,并且我需要能够向数组中添加函数,但是我不确定如何使它起作用。 我发现,当我尝试执行以下操作时,Swift Playground不会建议您: 这很有道理-Swift无法推断出-的类型,但这就是我的问题所在。我不确定如何预定义函数数组。 是否可以在Swift中创建函数数组?我想是这样,职能是一等公民。 问题答案: 绝对有可能,只需将数

  • 我正在尝试使用CloudFormation创建Lambda函数的新版本。 我想拥有同一个Lambda函数的多个版本,这样我就可以(a)在不同的版本中指向别名——比如DEV和PROD——并且(b)能够回滚到更早的版本 这是我的Lambda版本的定义: 运行“aws cloudformation创建堆栈”时会创建一个版本,但后续的“aws cloudformation更新堆栈”命令不会执行任何操作。没

  • 我正在创建一个Azure函数,当图像上传到或添加到特定Azure存储时触发该函数,它执行以下操作: 1.)调整图像大小2.)将图像放入正确的目录(使用输出绑定)3.)删除处理后添加到Azure存储的原始blob图像。 我已经完成了过程中的步骤1和2,但我发现很少甚至没有关于删除blob或API的文档,这些文档将公开Azure存储的方法。(使用C#) 以下是示例代码: