Nano Hash - криптовалюты, майнинг, программирование

Приложение-функция Terraform Azure из загрузки файла

Я пытаюсь создать приложение-функцию Java Azure, загрузив zip-файл из локальной файловой системы. Ниже приведен код. Он работает должным образом при запуске из системы Windows 10. Тот же код, похоже, не работает при запуске из системы ubuntu, ошибки не было, но приложение-функция не имеет никаких функций на портале Azure. Версия Terraform одинакова (Terraform v0.12.28) как для Windows, так и для Ubuntu. Тем не менее, похоже, что это не работает на Ubuntu. ниже показано сообщение об ошибке на лазурном портале, приложение-функция  введите описание изображения здесь var.functionapp = func_java.zip, zip-файл находится в той же папке с main.tf

├── main.tf
├── tran_fun.zip
└── variables.tf


resource "azurerm_storage_blob" "appcode" {
    name = "functionapp.zip"
    storage_account_name = "${azurerm_storage_account.storage_account.name}"
    storage_container_name = "${azurerm_storage_container.storage_container_deployement.name}"
    type = "Block"
    source = "${var.functionapp}"
}


# // /***********************function app **********************************/
resource "azurerm_app_service_plan" "spp_service_plan" {
  name                = "${local.app_serv_plan_name}"
  resource_group_name = azurerm_resource_group.rg_creation.name
  location            = azurerm_resource_group.rg_creation.location
  kind                = "FunctionApp"

  sku {
    tier = "Dynamic"
    size = "Y1"
  }
}

resource "azurerm_function_app" "function_app" {
  name                      =  "${local.app_serv_name}" 
  resource_group_name = azurerm_resource_group.rg_creation.name
  location            = azurerm_resource_group.rg_creation.location
  app_service_plan_id       = azurerm_app_service_plan.spp_service_plan.id
  storage_connection_string = azurerm_storage_account.storage_account.primary_connection_string
  app_settings = {
    FUNCTIONS_WORKER_RUNTIME = "java"
    FUNCTIONS_EXTENSION_VERSION = "~3"
    APPINSIGHTS_INSTRUMENTATIONKEY = azurerm_application_insights.app_insights.instrumentation_key
    APPLICATIONINSIGHTS_CONNECTION_STRING = "InstrumentationKey=${azurerm_application_insights.app_insights.instrumentation_key}"
    HANA_CREDENTIALS = var.hanaCredentials
    TENANT_ID = var.cptenantId
    HASH = "${filebase64sha256("${var.functionapp}")}"
    WEBSITE_RUN_FROM_PACKAGE = "https://${azurerm_storage_account.storage_account.name}.blob.core.windows.net/${azurerm_storage_container.storage_container_deployement.name}/${azurerm_storage_blob.appcode.name}${data.azurerm_storage_account_sas.sas.sas}"
   
 }
}

Ниже показано сообщение об ошибке из консоли приложения-функции  введите описание изображения здесь


Ответы:


1

Вы можете определить такую ​​переменную, если файл .zip находится в той же папке, что и main.tf.

variable "functionapp" {
    type = "string"
    default = "./func_java.zip"
}

Это сработало на моей стороне.

введите описание изображения здесь

Для получения дополнительной информации вы можете прочитать этот блог.

25.08.2020
  • Спасибо за ответ. Я сослался на тот же блог. Он все еще не работает при запуске из Ubuntu, terraform apply работает без ошибок. Но в приложении-функции нет функций. На портале Azure отображается ошибка: mscorlib: не удалось найти файл D: \ home \ site \ wwwroot \ host.json. Как ни странно, он отлично работает при запуске из системы Windows. 25.08.2020
  • Странно, я без проблем использую один и тот же код в ubuntu и Windows. Возможно, проблема в func_java.zip? Как ты получил это? Вы можете это проверить? Вы добавляете путь типа default = "./func_java.zip", включая ./? 25.08.2020
  • Вы проверяли, включен ли host.json в func_java.zip при его переносе или копировании в Ubuntu? 25.08.2020
  • Да, я включил ./. Этот zip-файл предоставлен java-разработчиком. Контейнер хост-файла ниже подробностей. 25.08.2020
  • {версия: 2.0, extensionBundle: {id: Microsoft.Azure.Functions.ExtensionBundle, версия: [1. *, 2.0.0)}, агрегатор: {batchSize: 1000, flushTimeout: 00:00:30}, functionTimeout: 00 : 10: 00, ведение журнала: {fileLoggingMode: always, console: {isEnabled: true}, logLevel: {default: Information, Host.Results: Error, Function: Information, Host.Aggregator: Trace}}} 25.08.2020
  • Каков результат tree на Ubuntu? 25.08.2020
  • добавлен в OP 25.08.2020
  • Нет ли других ошибок или ошибок терраформирования, кроме ошибки портала mscorlib:could not find file D:\home\site\wwwroot\host.json? Есть ли какие-либо подробности, когда вы нажимаете на это уведомление об ошибке? 25.08.2020
  • Ошибка при применении terraform отсутствует. Добавлен снимок экрана с ошибкой. Заявка завершена! Ресурсы: 0 добавлено, 1 изменено, 0 уничтожено. Снятие блокировки состояния. Это может занять некоторое время ... 25.08.2020
  • Перейдите на портал Azure --- служба приложений (ваше приложение-функция) --- консоль --- запустите команду ls, не могли бы вы найти host.json файл, а также запустите cat host.json, чтобы проверить содержимое. 25.08.2020
  • добавлен в ОП. Спасибо 25.08.2020
  • Проблема в том, что файл host.json и других приложений-функций не существует по этому пути D:\home\site\wwwroot, когда вы развертываете его с помощью terraform. Что за файл tran_fun.zip? Вы меняете имя файла func_java.zip? 25.08.2020
  • Я предлагаю повторно создать файл .zip для развертывания в функции Azure, чтобы мы могли сузить проблему. docs. microsoft.com/en-us/azure/azure-functions/ 25.08.2020
  • Конечно, позвольте мне проверить и свяжусь с вами. Спасибо 25.08.2020
  • Спасибо, Нэнси Сюн. Это была проблема с zip-файлом. Файл был поврежден, когда я переместил файл из Windows в Linux,. 25.08.2020
  • рад, что он разрешился. Вы можете отметить мой ответ, который поможет вам это исправить. 25.08.2020

  • 2

    Проблема была в zip-файле. Zip-файл был поврежден при перемещении из Windows

    25.08.2020
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..