首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure Terraform函数应用程序部署问题

Azure Terraform函数应用程序部署问题
EN

Stack Overflow用户
提问于 2021-09-22 20:50:11
回答 1查看 441关注 0票数 1

我希望有人能帮助我解决这个问题,因为我不知道我做错了什么。

我正在尝试构建一个azure函数应用程序,并将zip包(计时器触发器)部署到它。

我已经设置了这个代码。

代码语言:javascript
复制
resource "azurerm_resource_group" "function-rg" {
  location = "westeurope"
  name     = "resource-group"
}

data "azurerm_storage_account_sas" "sas" {
  connection_string = azurerm_storage_account.sthriprdeurcsvtoscim.primary_connection_string
  https_only        = true
  start             = "2021-01-01"
  expiry            = "2023-12-31"
  resource_types {
    object    = true
    container = false
    service   = false
  }
  services {
    blob  = true
    queue = false
    table = false
    file  = false
  }
  permissions {
    read    = true
    write   = false
    delete  = false
    list    = false
    add     = false
    create  = false
    update  = false
    process = false
  }
}


resource "azurerm_app_service_plan" "ASP-rg-hri-prd-scim" {
  location                     = azurerm_resource_group.function-rg.location
  name                         = "ASP-rghriprdeurcsvtoscim"
  resource_group_name          = azurerm_resource_group.function-rg.name
  kind                         = "functionapp"
  maximum_elastic_worker_count = 1
  per_site_scaling             = false
  reserved                     = false
  sku {
    capacity = 0
    size     = "Y1"
    tier     = "Dynamic"
  }
}

resource "azurerm_storage_container" "deployments" {
  name                  = "function-releases"
  storage_account_name  = azurerm_storage_account.sthriprdeurcsvtoscim.name
  container_access_type = "private"
}

resource "azurerm_storage_blob" "appcode" {
  name                   = "functionapp.zip"
  storage_account_name   = azurerm_storage_account.sthriprdeurcsvtoscim.name
  storage_container_name = azurerm_storage_container.deployments.name
  type                   = "Block"
  source                 = "./functionapp.zip"
}

resource "azurerm_function_app" "func-hri-prd-eur-csv-to-scim" {
  storage_account_name       = azurerm_storage_account.sthriprdeurcsvtoscim.name
  storage_account_access_key = azurerm_storage_account.sthriprdeurcsvtoscim.primary_access_key
  app_service_plan_id        = azurerm_app_service_plan.ASP-rg-hri-prd-scim.id
  location                   = azurerm_resource_group.function-rg.location
  name                       = "func-hri-prd-csv-to-scim"
  resource_group_name        = azurerm_resource_group.function-rg.name
  app_settings = {
    "WEBSITE_RUN_FROM_PACKAGE"    = "https://${azurerm_storage_account.sthriprdeurcsvtoscim.name}.blob.core.windows.net/${azurerm_storage_container.deployments.name}/${azurerm_storage_blob.appcode.name}${data.azurerm_storage_account_sas.sas.sas}"
    "FUNCTIONS_EXTENSION_VERSION" = "~3"
    "FUNCTIONS_WORKER_RUNTIME"    = "dotnet"
  }
  enabled = true
  identity {
    type = "SystemAssigned"
  }
  version                = "~3"
  enable_builtin_logging = false
}

resource "azurerm_storage_account" "sthriprdeurcsvtoscim" {
  account_kind              = "Storage"
  account_replication_type  = "LRS"
  account_tier              = "Standard"
  allow_blob_public_access  = false
  enable_https_traffic_only = true
  is_hns_enabled            = false
  location                  = azurerm_resource_group.function-rg.location
  name                      = "sthriprdeurcsvtoscim"
  resource_group_name       = azurerm_resource_group.function-rg.name
}

不用说,terraform apply工作时没有任何错误。函数应用的配置是正确的,并且指向正确的存储帐户。存储帐户有一个容器,其中包含我的azure函数代码的zip文件。

但是当我转到函数应用程序-> Functions时,我看不到任何函数。

有没有人能帮我理解一下我到底做错了什么?函数app是一个.net3函数

EN

回答 1

Stack Overflow用户

发布于 2021-09-23 04:10:01

当你创建一个function应用程序时,它没有设置为Functions + Terraform。它是为Visual Code + Functions部署而设置的。我们需要调整package.json,使其为我们生成ZIP文件,并调整.gitignore,使其忽略Terraform构建文件。我使用了一堆帮助NPM包:

func command.

  • @ffflorian/jszip-cli
  • azure-functions-core-tools用于压缩我的文件用于创建directories.
  • npm-run-all的up.
  • mkdirp,特别是用于在order.
  • rimraf中执行内容以删除内容的run-s命令。

下面是package.json的代码

代码语言:javascript
复制
{
  "name": "backend",
  "version": "1.0.0",
  "description": "",
  "scripts": {
    "func": "func",
    "clean": "rimraf build",
    "build:compile": "tsc",
    "build:prune": "npm prune --production",
    "prebuild:zip": "mkdirp --mode=0700 build",
    "build:zip": "jszip-cli",
    "build": "run-s clean build:compile build:zip",
    "predeploy": "npm run build",
    "deploy": "terraform apply"
  },
  "dependencies": {
  },
  "devDependencies": {
    "azure-functions-core-tools": "^2.7.1724",
    "@azure/functions": "^1.0.3",
    "@ffflorian/jszip-cli": "^3.0.2",
    "mkdirp": "^0.5.1",
    "npm-run-all": "^4.1.5",
    "rimraf": "^3.0.0",
    "typescript": "^3.3.3"
  }
}

  • npm run build将构建ZIP file.
  • npm run deploy将构建ZIP文件并将其部署到Azure。

有关完整信息,请访问Azure Function app with Terraform

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69291123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档