你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Java 和 Gradle 创建函数并将其发布到 Azure
本文介绍如何使用 Gradle 命令行工具生成 Java 函数项目并将其发布到 Azure Functions。 完成后,函数代码会在 Azure 的无服务器托管计划中运行,并由 HTTP 请求触发。
注意
如果 Gradle 不是你的首选开发工具,请查看面向使用 Maven、IntelliJ IDEA 和 VS Code 的 Java 开发人员的类似教程。
先决条件
若要使用 Java 开发函数,必须安装以下软件:
- Java 开发人员工具包版本 8、11、17 或 21。 (目前只有 Linux 支持预览版 Java 21)
- Azure CLI
- Azure Functions Core Tools 版本 2.6.666 或更高版本
- Gradle 6.8 和更高版本
还需要一个有效的 Azure 订阅。 如果没有 Azure 订阅,请在开始之前创建一个 Azure 免费帐户。
重要
JAVA_HOME 环境变量必须设置为 JDK 的安装位置,以完成本快速入门。
准备 Functions 项目
使用以下命令克隆示例项目:
git clone https://github.com/Azure-Samples/azure-functions-samples-java.git
cd azure-functions-samples-java/triggers-bindings
打开 build.gradle
,将以下节中的 appName
更改为唯一名称,以免在部署到 Azure 时发生域名冲突。
azurefunctions {
resourceGroup = 'java-functions-group'
appName = 'azure-functions-sample-demo'
pricingTier = 'Consumption'
region = 'westus'
runtime {
os = 'windows'
}
localDebug = "transport=dt_socket,server=y,suspend=n,address=5005"
}
在文本编辑器中打开 src/main/java 路径中的新 Function.java 文件,查看生成的代码。 该代码是一个 HTTP 触发的函数,用于回显请求的正文。
在本地运行函数
运行以下命令,以生成并运行函数项目:
gradle jar --info
gradle azureFunctionsRun
在本地运行项目时,会看到 Azure Functions Core Tools 的如下所示的输出:
... Now listening on: http://0.0.0.0:7071 Application started. Press Ctrl+C to shut down. Http Functions: HttpExample: [GET,POST] http://localhost:7071/api/HttpExample ...
在新的终端窗口中使用以下 cURL 命令,从命令行触发函数:
curl -w "\n" http://localhost:7071/api/HttpExample --data AzureFunctions
预期输出如下所示:
Hello, AzureFunctions
注意
如果将 authLevel 设置为 FUNCTION
或 ADMIN
,则在本地运行时不需要访问密钥。
在终端中使用 Ctrl+C
停止函数代码。
将函数部署到 Azure
首先部署函数应用时,会在 Azure 中创建函数应用和相关资源。 在部署之前,必须使用 az login Azure CLI 命令登录到 Azure 订阅。
az login
提示
如果帐户可以访问多个订阅,请使用 az account set 设置此会话的默认订阅。
使用以下命令将项目部署到新的函数应用。
gradle azureFunctionsDeploy
这会根据 build.gradle 文件中的值在 Azure 中创建以下资源:
- 资源组。 使用你提供的 resourceGroup 命名。
- 存储帐户。 Functions 所需。 此名称根据存储帐户名称要求随机生成。
- 应用服务计划。 在指定的区域中托管函数应用的无服务器消耗计划。 此名称随机生成。
- 函数应用。 函数应用是函数的部署和执行单元。 此名称是 appName 追加一个随机生成的数字。
此部署还会在启用“从包运行”模式的情况下,使用 zip deployment 将项目文件打包并部署到新函数应用。
示例项目中 HTTP 触发器的 authLevel 为 ANONYMOUS
,它将跳过身份验证。 但是,如果使用其他 authLevel(如 FUNCTION
或 ADMIN
),则需要获得函数密钥以通过 HTTP 调用函数终结点。 若要获取函数密钥,最简单的方法是使用 Azure 门户。
获取 HTTP 触发器 URL
可以从 Azure 门户获取通过函数密钥触发函数所需的 URL。
浏览到 Azure 门户,登录,在页面顶部将函数应用的 appName 键入“搜索”栏,然后按 Enter。
在函数应用中选择“函数”,选择需要的函数,然后单击右上角的“获取函数 URL”。
选择“默认(函数密钥)”,然后选择“复制”。
现在可以使用复制的 URL 来访问函数。
在 Azure 中验证函数
若要使用 cURL
验证在 Azure 上运行的函数应用,请将以下示例中的 URL 替换为从门户复制的 URL。
curl -w "\n" http://azure-functions-sample-demo.azurewebsites.net/api/HttpExample --data AzureFunctions
这会向函数终结点发送一个 POST 请求,请求正文中包含 AzureFunctions
。 会看到以下响应。
Hello, AzureFunctions
后续步骤
我们已使用 HTTP 触发的函数创建 Java 函数项目,在本地计算机上运行该项目,并将其部署到 Azure。 现在,通过以下方式扩展函数