![](/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.