#azure-devops #azure-functions #terraform-provider-azure
Вопрос:
Я надеюсь, что кто-нибудь сможет помочь мне с этой проблемой, потому что я не понимаю, что я делаю не так.
Я пытаюсь создать функциональное приложение azure и развернуть в нем почтовый пакет (триггер таймера).
Я установил этот код.
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
работа без каких-либо ошибок. Конфигурации приложения-функции верны и указывают на правильную учетную запись хранения. В учетной записи хранения есть контейнер с zip-файлом, содержащим мой код функции azure.
Но когда я захожу в приложение функций -> Функции, я не вижу там никакой функции.
Пожалуйста, кто-нибудь может помочь мне понять, что я делаю не так в этом? Функциональное приложение представляет собой функцию .net3
Комментарии:
1. Что говорят журналы функции?
2. Чтобы проверить загруженный архив, вы можете использовать кнопку » Загрузить содержимое приложения » в разделе «Обзор приложений функций».
Ответ №1:
Когда вы создаете приложение функций, оно не настроено для функций Терраформирование. Он настроен для развертывания визуального кода функций. Нам нужно настроить как package.json
так, чтобы он создавал ZIP-файл для нас, так и .gitignore
так, чтобы он игнорировал файлы сборки Terraform. Я использую кучу вспомогательных пакетов NPM:
azure-functions-core-tools
для команды func.@ffflorian/jszip-cli
чтобы ЗААРХИВИРОВАТЬ мои файлы.mkdirp
для создания каталогов.npm-run-all
и особенноrun-s
команда для выполнения вещей по порядку.rimraf
для удаления вещей.
Ниже приведен код, как package.json
выглядит
{
"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-файл.npm run deploy
создаст ZIP-файл и развернет его в Azure.
Для получения полной информации проверьте приложение функций Azure с помощью Terraform.