我有以下 terraform 代码,用于使用 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 的最新 terraform 提供程序,但收到此错误:
错误:创建函数应用程序函数:(函数名称“mssql-to-snowflake-function”/站点名称“mssql-to-snowflake-app-new”/资源组“mssql_to_snowflake_etl_rg”)-状态:“正在运行”/InProgressOperationID:
与 azurerm_function_app_function.mssql_to_snowflake_app_func
在 azure_fun.tf 第 63 行,在资源“azurerm_function_app_function”“mssql_to_snowflake_app_func”中:
资源“azurerm_function_app_function”“mssql_to_snowflake_app_func”{
创建函数应用程序函数:(函数名称“mssql-to-snowflake-function”/站点名称“mssql-to-snowflake-app-new”/资源组“mssql_to_snowflake_etl_rg”)-状态:“正在运行”/InProgressOperationID:
有人可以帮助整理以下错误的详细信息,或者帮助提供任何文档或示例来解释如何使用最新的 terraform Azure 提供商使用 terraform zip 部署来部署 Azure 功能吗?
您似乎正在使用 zip_deploy_file 属性。根据文档,使用此值需要在 app_settings 中的应用程序上设置 WEBSITE_RUN_FROM_PACKAGE=1 或 SCM_DO_BUILD_DURING_DEPLOYMENT=true。
您的函数应用配置为 WEBSITE_RUN_FROM_PACKAGE=0。
Azure 函数可以将代码部署为 zip 包,也可以为每个函数内联部署代码。您收到的错误实际上是在函数应用程序函数上,如果未加载代码包,那么您对该函数的引用将不起作用,因为该包未加载。
可以分享一下你的代码包吗?或者至少是一个样本?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)