使用terraform部署Azure功能



我有下面的地形代码,可以使用zip部署将功能应用程序和功能部署到Azure门户。

terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "3.50.0"
}
}
}
resource "azurerm_service_plan" "mssql_to_blob_service_plan" {
name                = "mssql_to_blob_service_plan-service-plan"
resource_group_name = azurerm_resource_group.mssql_to_snowflake_etl.name
location            = var.default_location
os_type             = "Linux"
sku_name            = "Y1"
}
locals {
tmp_azure_function_zip = "../tmp/code.zip"
azure_function_local_basedir = "../snowflake_sync_function"
}
data "archive_file" "snowpipefunctionzip" {
type        = "zip"
output_path = local.tmp_azure_function_zip
excludes    = ["__pycache__"]
source {
content  = file("${local.azure_function_local_basedir}/__init__.py")
filename = "__init__.py"
}
source {
content  = file("${local.azure_function_local_basedir}/function.json")
filename = "function.json"
}
source {
content  = file("${local.azure_function_local_basedir}/requirements.txt")
filename = "requirements.txt"
}
}

resource "azurerm_linux_function_app" "mssql_to_snowflake_app" {
name                        = "mssql-to-snowflake-app-new"
resource_group_name         = azurerm_resource_group.mssql_to_snowflake_etl.name
location                    = var.default_location
storage_account_name        = azurerm_storage_account.staging_storage_account.name
storage_account_access_key  = azurerm_storage_account.staging_storage_account.primary_access_key
service_plan_id             = azurerm_service_plan.mssql_to_blob_service_plan.id

zip_deploy_file             = data.archive_file.snowpipefunctionzip.output_path # local.tmp_azure_function_zip
site_config {}
app_settings = {
"WEBSITE_RUN_FROM_PACKAGE" = "0"
}
}
resource "azurerm_function_app_function" "mssql_to_snowflake_app_func" {
name            = "mssql-to-snowflake-function"
function_app_id = azurerm_linux_function_app.mssql_to_snowflake_app.id
language        = "Python"
test_data = jsonencode({
"name" = "Azure"
})
config_json = jsonencode({
"bindings" = [
{
"authLevel" = "function"
"direction" = "in"
"methods" = [
"get",
"post",
]
"name" = "req"
"type" = "timerTrigger"
},
{
"direction" = "out"
"name"      = "$return"
"type"      = "http"
},
]
})
}

我正在使用Azurerm的最新地形提供程序,我收到这个错误:

错误:创建函数应用程序函数:(函数名称"mssql到雪花函数"/站点名称"mssql到雪花应用程序新"/资源组"mssql_to_snowflake_etl_rg")-状态:";正在运行"/InProgressOperationID:
带有azurerm_function_app_function.msql_to_snowflake_app_func在azure_fun.tf行63上;azurerm_function_app_function"mssql_to_nowflake_app_func":资源";azurerm_function_app_function"mssql_to_nowflake_app_func"{创建函数应用程序函数:(函数名称"mssql到雪花函数"/站点名称"mssql到雪花应用程序新"/资源组"mssql_to_snowflake_etl_rg")-状态:";正在运行"/InProgressOperationID:

是否有人可以帮助整理以下错误的详细信息,或帮助提供任何文档或示例,解释使用最新的terraform Azure提供程序使用terraform zip部署部署Azure功能?

您似乎在使用zip_deploy_file属性。根据文档,使用此值需要在App_settings中的应用程序上设置WEBSITE_RUN_FROM_PACKAGE=1或SCM_DO_BUILD_URING_DEPLOYMENT=true。

您的函数应用程序已配置为WEBSITE_RUN_FROM_PACKAGE=0。

Azure函数可以将代码部署为zip包,也可以为每个函数内联部署代码。你收到的错误实际上是在函数应用程序函数上,如果没有加载代码包,那么你对该函数的引用就不会起作用,因为没有加载该包。

你能分享你的代码包吗?或者至少一个样品?

最新更新