как развернуть существующую функцию Azure с помощью terraform

У меня есть лазурная функция, созданная локально с помощью Visual Studio. Я пытаюсь развернуть лазурную функцию с помощью terraform, но выдает ошибку

Код, который я пробую, показан ниже:

resource "azurerm_function_app" "testDeployTF" {
  name                      = "testDeployADddecendant"
  location                  = "${azurerm_resource_group.rg-testDeployTF.location}"
  resource_group_name       = "${azurerm_resource_group.rg-testDeployTF.name}"
  app_service_plan_id       = "${azurerm_app_service_plan.sp-testDeployTF.id}"
  storage_connection_string = "DefaultEndpointsProtocol=https;AccountName=xxxx;AccountKey=xxxxxxxxxxx;EndpointSuffix=core.windows.net"

  app_settings {
    HASH            = "${base64sha256(file("FunctionApp1.zip"))}"
    WEBSITE_USE_ZIP = "https://${decendant.sa-testDeployTF.name}.blob.core.windows.net/${azurerm_storage_container.sc-testDeployTF.name}/${azurerm_storage_blob.sb-testDeployTF.name}${data.azurerm_storage_account_sas.sas-testDeployTF.sas}"

  }
}

Если я удалю app_setting, код создаст новую пустую функцию, но я хочу, чтобы мне нужна новая функция с кодом, который у меня есть в моем локальном.

Приведенный выше код вызывает следующую ошибку, когда я использую app_seettings:

Ошибка: неподдерживаемый тип блока

в строке 78 terraformscript.tf в ресурсе «azurerm_function_app» «testDeployTF»: 78: app_settings {

Блоки типа app_settings здесь не ожидаются.


person Community    schedule 05.06.2019    source источник
comment
Мне нужно поместить app_settings в variable.tf?   -  person    schedule 05.06.2019
comment
Я не думаю, что вы можете использовать terraform для создания функции с кодом внутри за один шаг.   -  person Charles Xu    schedule 05.06.2019
comment
@CharlesXu, как поживаете тогда. В основном у меня есть лазурная функция, созданная с помощью Visual Studio, и я хочу, чтобы эта функция была развернута на лазурном портале с использованием terraform.   -  person    schedule 05.06.2019
comment
Когда вы используете Visual Studio, она использует расширение, такое как azure-function-core-tool, для копирования кода за вас. А terraform просто может создать функцию за вас. Вам нужно скопировать свой код в функцию самостоятельно.   -  person Charles Xu    schedule 05.06.2019
comment
@CharlesXu, я хочу, чтобы это было автоматизировано, так что может быть самым простым способом вставить код? У меня есть код, загруженный в большой двоичный объект.   -  person    schedule 05.06.2019
comment
можно ли загрузить с помощью команд azure cli ?? после использования терраформы   -  person    schedule 05.06.2019
comment
Да, вы можете сделать это через интерфейс командной строки.   -  person Charles Xu    schedule 05.06.2019
comment
@CharlesXu, как ты меня проинформируешь? Что я сделаю, так это создам функцию, используя terraform, а затем, используя CLI, я загружу код. Можете ли вы помочь мне с командами. Я заархивировал весь проект Visual Studio и загрузил его в blob, поэтому я хочу, чтобы он был взят из blob, а затем код, который нужно вставить для работы   -  person    schedule 05.06.2019
comment
@charles Xu Я все еще пытаюсь. Но как мне с помощью cli развернуть код для функции, которая находится в BLOB-объекте   -  person    schedule 05.06.2019
comment
Насколько я знаю, это невозможно, когда вы храните код в большом двоичном объекте хранилища через интерфейс командной строки. Вам также необходимо загрузить код из большого двоичного объекта.   -  person Charles Xu    schedule 05.06.2019


Ответы (2)


Для вашей проблемы вы просто можете использовать Terraform для создания пустой функции Azure, но не с вашим кодом. Кроме того, когда вы используете визуальную студию локально, она создает для вас пустую функцию, а затем использует инструмент azure-function-core-tool для копирования кода за вас.

Вы можете ознакомиться с подробностями об инструменте azure-function-core-tool. . И когда вы используете Azure CLI, он также должен использовать этот инструмент, см. Шаги в Создайте свою первую функцию из командной строки.

person Charles Xu    schedule 05.06.2019

Я наткнулся на этот вопрос, погуглил об ошибке terraform. Вы можете просто добавить знак равенства после app_settings.

app_settings = {
  Key = "Value"
}
person randomsolutions    schedule 02.03.2021