![](/img/trans.png)
[英]Configure Application Inisghts for Azure Function App (Terraform)
[英]Terraform Azure function app - simple example not spinning up the function properly
I am able to spin-up a simple Java Azure Function App, that works as in a demo and can be also reached on the public web URL.
在第二步中,我尝试做同样的事情,但是想使用 Terraform 进行部署:
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "=3.6.0"
}
}
}
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
provider "azurerm" {
features {}
}
resource "azurerm_resource_group" "fnappp" {
name = "terraskrgroup2"
location = "North Europe"
}
resource "azurerm_storage_account" "fnappp" {
name = "terraskrstorage2"
resource_group_name = azurerm_resource_group.fnappp.name
location = azurerm_resource_group.fnappp.location
account_tier = "Standard"
account_replication_type = "LRS"
}
resource "azurerm_service_plan" "fnappp" {
name = "serviceplanfnappp2"
resource_group_name = azurerm_resource_group.fnappp.name
location = azurerm_resource_group.fnappp.location
os_type = "Linux"
sku_name = "EP1"
worker_count = 1
}
resource "azurerm_application_insights" "fnappp" {
name = "tf-test-appinsights2"
location = azurerm_resource_group.fnappp.location
resource_group_name = azurerm_resource_group.fnappp.name
application_type = "java"
}
resource "azurerm_linux_function_app" "fnappp" {
name = "example-linux-function-final2"
resource_group_name = azurerm_resource_group.fnappp.name
location = azurerm_resource_group.fnappp.location
storage_account_name = azurerm_storage_account.fnappp.name
storage_account_access_key = azurerm_storage_account.fnappp.primary_access_key
service_plan_id = azurerm_service_plan.fnappp.id
functions_extension_version = "~3"
site_config {
application_stack {
docker {
image_name = "functhird"
image_tag = "latest"
registry_url = "functiontestregistry.azurecr.io"
registry_username = "REDACTED"
registry_password = "REDACTED"
}
}
application_insights_connection_string = azurerm_application_insights.fnappp.connection_string
application_insights_key = azurerm_application_insights.fnappp.instrumentation_key
http2_enabled = true
}
}
我正在使用 Azure 容器注册表,主体角色为 Owner - 使用相同的凭据将 docker 映像推送到注册表,所以这应该可以正常工作。
我观察到的症状是:
您对 Terraform 模板可能有什么问题有什么建议吗?
在深入挖掘之后,在以下帖子中: 功能基础设施即代码
在自定义容器图像部分它说:
此外,将 WEBSITES_ENABLE_APP_SERVICE_STORAGE 设置为 false,因为您的应用内容是在容器本身中提供的
结果解决了我的问题。
所以完整的 Terraform 代码部署简单的 Java docker 映像如下:
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "=3.16.0"
}
}
}
provider "azurerm" {
features {}
}
resource "azurerm_resource_group" "fnappp" {
name = "terraskrgroup4"
location = "North Europe"
}
resource "azurerm_storage_account" "fnappp" {
name = "terraskrstorage4"
resource_group_name = azurerm_resource_group.fnappp.name
location = azurerm_resource_group.fnappp.location
account_tier = "Standard"
account_replication_type = "LRS"
}
resource "azurerm_service_plan" "fnappp" {
name = "serviceplanfnappp4"
resource_group_name = azurerm_resource_group.fnappp.name
location = azurerm_resource_group.fnappp.location
os_type = "Linux"
sku_name = "EP1"
worker_count = 1
}
resource "azurerm_application_insights" "fnappp" {
name = "tf-test-appinsights4"
location = azurerm_resource_group.fnappp.location
resource_group_name = azurerm_resource_group.fnappp.name
application_type = "java"
}
resource "azurerm_linux_function_app" "fnappp" {
name = "example-linux-function-final4"
resource_group_name = azurerm_resource_group.fnappp.name
location = azurerm_resource_group.fnappp.location
storage_account_name = azurerm_storage_account.fnappp.name
storage_account_access_key = azurerm_storage_account.fnappp.primary_access_key
service_plan_id = azurerm_service_plan.fnappp.id
functions_extension_version = "~3"
app_settings = {
WEBSITES_ENABLE_APP_SERVICE_STORAGE = false
}
site_config {
application_stack {
docker {
image_name = "functhird"
image_tag = "latest"
registry_url = "functiontestregistry.azurecr.io"
registry_username = "REDACTED"
registry_password = "REDACTED"
}
}
application_insights_connection_string = azurerm_application_insights.fnappp.connection_string
application_insights_key = azurerm_application_insights.fnappp.instrumentation_key
http2_enabled = true
}
}
而我为使其正常工作所做的关键修改是添加:
app_settings = {
WEBSITES_ENABLE_APP_SERVICE_STORAGE = false
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.