使用 Terraform 创建 Azure Function App 时如何设置 java 版本?

How do you set the java version while creating Azure Function App using Terraform?

在 Azure 门户中,我可以设置 Java 版本,如下所示: portal image

在 terraform 配置文件中,我只能使用以下方式设置 Azure Functions 版本:

resource "azurerm_function_app" "function-app" {
  name                       = "test"
  location                   = azurerm_resource_group.resource-group.location
  resource_group_name        = azurerm_resource_group.resource-group.name
  app_service_plan_id        = azurerm_app_service_plan.service-plan.id
  storage_account_name       = azurerm_storage_account.storage-account.name
  storage_account_access_key = azurerm_storage_account.storage-account.primary_access_key
  app_settings = {
    FUNCTION_APP_EDIT_MODE         = "readOnly"
    WEBSITE_RUN_FROM_PACKAGE       = 1
    FUNCTIONS_EXTENSION_VERSION    = 2
    FUNCTIONS_WORKER_RUNTIME       = "java"
    SCM_DO_BUILD_DURING_DEPLOYMENT = false
  }
}

部署上述配置时,只有运行时设置为 java,但由于未设置版本,我的部署无法正常工作。

门户中的结果如下所示: java stack settings

您可以使用 version 参数来设置与 Function App 关联的运行时版本。参见 Argument Reference

此外,来自文档---How to target Azure Functions runtime versions

A function app runs on a specific version of the Azure Functions runtime. There are three major versions: 1.x, 2.x, and 3.x. By default, function apps are created in version 3.x of the runtime.

在这种情况下,您可以在 resource "azurerm_function_app" "function-app"" 下添加参数 version = "~3"。它会得到你预期的结果。

不知道Nancy Xiong的回答是如何被接受的,因为它没有回答问题,具体是关于在terraform中为azure function apps设置java版本的问题。 这是正确的做法:

site_config {
       linux_fx_version = "JAVA|11"    
  }

site_config 文档

使用 Azure 提供商版本 >=v2.57.0,您可以通过 site_config 属性 java_version.

设置 Java 版本

java_version - (Optional) Java version hosted by the function app in Azure. Possible values are 1.8, 11.

resource "azurerm_function_app" "function-app" {
  // ..

  site_config {
    java_version = "11"
  }
}