Функции Azure исчезают из приложения при смене компьютеров

Недавно я перешел с Unbuntu на ноутбук MacOS, и, похоже, у меня возникли проблемы с развертыванием на нем приложения-функции nodejs Azure.

Я только что клонировал репозиторий, и мне понравился файл local.settings.json на компьютере MacOS, но всякий раз, когда я запускаю func azure functionapp publish workers-app-staging из MacOS, он не может развернуться, единственное, что я получаю, это то, что интерфейс существует

Getting site publishing info...
[2024-08-06T05:59:25.030Z] Starting the function app deployment...
Uploading package...
Uploading 43.42 MB [##############################################################################]
Upload completed successfully.
Deployment completed successfully.
[2024-08-06T05:59:47.200Z] Syncing triggers...
Functions in workers-app-staging:

С другой стороны, запуск той же команды из Linux работает, как и ожидалось, и cli выводит в терминал все функции проекта поверх вывода, приведенного выше. Функции развернуты, и я вижу их на портале Azure.

Журнал сбоев отсутствует, zip-файл обновляется в корзине, а WEBSITE_RUN_FROM_PACKAGE env обновляется правильной строкой. (Приложение Azure Func использует Linux)

Есть идеи, в чем будет разница между ними? На что мне следует обратить внимание больше, чтобы отладить это?

Попробовал отладить и настроить параметры и убедиться, что конфигурации одинаковы на Linux и MacOS.

У меня есть следующие версии

❯ func version                                                                                                                                                  
4.0.5907 

❯ npm list @azure/functions
[email protected] /Users/george/code/workers-app
└── @azure/[email protected]

❯ node --version         
v18.20.4

Код функции

app.cosmosDB('forwardInvoiceOutEventsToTopic', {
  ...COSMOSDB_DEFAULT_CONFIG_WITH_LEASE,
  containerName: 'invoice-out-events',
  leaseContainerPrefix: 'forwardToTopic',
  maxItemsPerInvocation: 5,
  retry: DEFAULT_RETRY,
  handler: (document) => {console.info('this has a real implementation')}
})
app.eventGrid('invoiceOutGenerateDocument', {
  handler: (event) => {console.info('this has a real implementation')},
  return: output.cosmosDB({
    ...COSMOSDB_DEFAULT_CONFIG,
    containerName: 'invoice-out-events',
    createIfNotExists: false,
    connectionStringSetting: 'COSMOSDB_CONNECTION_STRING',
    collectionName: 'invoice-out-events'
  })
})
app.http('sandboxInsertInvoiceOut', {
  methods: ['GET', 'POST'],
  authLevel: 'anonymous',
  handler: (request) => {console.info('this has a real implementation')},
})

local.settings.json

{
  "IsEncrypted": false,
  "Values": {
    "APPLICATIONINSIGHTS_CONNECTION_STRING": "InstrumentationKey=...",
    "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=...",
    "FUNCTIONS_EXTENSION_VERSION": "~4",
    "FUNCTIONS_WORKER_RUNTIME": "node",
    "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "DefaultEndpointsProtocol=https;AccountName=...",
    "WEBSITE_CONTENTSHARE": "workers-app-staging-9180",
    "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "false",
    "WEBSITE_MOUNT_ENABLED": "1",
    "WEBSITE_NODE_DEFAULT_VERSION": "18",
    "WEBSITE_RUN_FROM_PACKAGE": "....",
    "FUNCTIONS_NODE_BLOCK_ON_ENTRY_POINT_ERROR": "true",
    "AzureWebJobsFeatureFlags": "EnableWorkerIndexing"
  },
  "ConnectionStrings": {}
}

хосты.json

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "excludedTypes": "Request"
      }
    }
  },
  "extensions": {
    "cosmosDB": {
      "connectionMode": "Gateway",
      "protocol": "Https"
    },
    "eventGrid": {
      "maxConcurrentCallsPerWorker": 1
    },
    "http": {
      "routePrefix": "",
      "maxOutstandingRequests": 200,
      "maxConcurrentRequests": 100,
      "dynamicThrottlesEnabled": true,
      "hsts": {
        "isEnabled": true,
        "maxAge": "10"
      }
    }
  },
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle",
    "version": "[4.0.0, 5.0.0)"
  }
}

Укажите код функции и local.settings.json.

Pravallika KV 06.08.2024 08:31

@PravallikaKV добавил код

George E 06.08.2024 08:41

Проверьте, совпадает ли значение строки подключения AzureWebJobsStorage, используемое в конфигурации локального приложения и приложения-функции на портале.

Pravallika KV 06.08.2024 08:51

Они одинаковы как на машине Linux, так и на машине Macos.

George E 06.08.2024 09:30

Удалите настройки WEBSITE_CONTENTAZUREFILECONNECTIONSTRING, WEBSITE_CONTENTSHARE и обновите значение WEBSITE_RUN_FROM_PACKAGE на 1. Разверните снова.

Pravallika KV 06.08.2024 10:51

Я просто хочу повторить, что использование этих настроек работает при развертывании с компьютера Ubuntu. Как они повлияют на развертывание того же кода с другой машины?

George E 06.08.2024 13:23
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
6
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема обнаружена после изучения раздела «Диагностика и решение проблемы» на портале Azure, в частности, утилиты «Функции, которые не запускают», поскольку функции были развернуты только с несинхронизированными привязками.

Ошибка указывала на то, что одну из функций невозможно загрузить из-за пакета argon2, который, согласно этому ответу, нуждался в другой команде для установки на MacOS. После запуска функции развернулись правильно.

Другие вопросы по теме