我遇到了 Azure Functions 的一些问题,其中一个 Function App 部署正确且运行良好,现在声称缺少依赖项 (NodeJS) 并在第二天测试时出错。如果我了解 Azure Functions 工作方式的生命周期,我想我可以更轻松地进行故障排除和修复。
任何人都可以解释生命周期或指向我似乎找不到的文档吗?
例如,我正在使用持续部署。使用这种方法,似乎有一个默认的 deploy.cmd 用于:
这一切都很好。我想知道接下来会发生什么。
例如,该功能在一段时间内未使用,因此我认为它已停止运行并“无序”?
当它再次访问时,它需要再次启动一些东西。
我想为 Azure Functions 应用程序配置站点到站点连接。是否可以?如果是,如何?
我有一个timerTrigger我想在VS Code上进行本地调试的功能,因此我func host start --debug vscode在根目录上执行以下host.json操作:
PS C:\Users\user\code\azure\functions> func host start --debug vscode
%%%%%%
%%%%%%
@ %%%%%% @
@@ %%%%%% @@
@@@ %%%%%%%%%%% @@@
@@ %%%%%%%%%% @@
@@ %%%% @@
@@ %%% @@
@@ %% @@
%%
%
[11/28/2017 10:21:30 PM] Reading host configuration file 'C:\Users\user\code\azure\functions\host.json'
[11/28/2017 10:21:30 PM] Host configuration file read:
[11/28/2017 10:21:30 PM] {}
info: Worker.Node.1b2b2430-8e1c-4d66-a3e9-bb1672be5ac2[0]
Start Process: node --inspect=5858 "C:\Users\user\.azurefunctions\bin\workers\node\dist\src\nodejsWorker.js" --host 127.0.0.1 --port 59865 --workerId 1b2b2430-8e1c-4d66-a3e9-bb1672be5ac2 --requestId f52eeb9b-d46b-4791-8504-3f94f380c1e2
[11/28/2017 10:21:31 …Run Code Online (Sandbox Code Playgroud) 我有一个函数应该根据一些内部逻辑返回错误状态 500/400。出于某种原因,无论我返回什么,Azure 函数都会不断返回 HTTP 状态 200。
这是一个示例
if (err) {
console.error('some error :', err);
context.res = { status: 400, body: err };
} else {
context.res = processRequest(context, req);
}
context.done();
Run Code Online (Sandbox Code Playgroud)
它返回状态 200 OK
下面是我的函数绑定
{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "req"
},
{
"type": "http",
"direction": "out",
"name": "res"
}
], "disabled": false
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用ARM模板部署Azure Function,但是我无法创建该函数本身。是否可以使用ARM模板创建实际功能?
我已压缩了该函数的源代码并将其放置在公共位置,我已将MSBuild部分添加到模板中,尽管部署成功完成-创建了App函数,但未创建函数本身
这是模板
{
"parameters": {
"name": {
"type": "string"
},
"storageName": {
"type": "string"
},
"location": {
"type": "string"
},
"subscriptionId": {
"type": "string"
},
"storage_account_endpoint": {
"type": "string"
}
},
"resources": [
{
"apiVersion": "2016-03-01",
"name": "[parameters('name')]",
"type": "Microsoft.Web/sites",
"properties": {
"name": "[parameters('name')]",
"siteConfig": {
"appSettings": [
{
"name": "FUNCTIONS_WORKER_RUNTIME",
"value": "node"
},
{
"name": "AzureWebJobsStorage",
"value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageName'),';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageName')), '2015-05-01-preview').key1)]"
},
{
"name": "FUNCTIONS_EXTENSION_VERSION",
"value": "~2"
},
{
"name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING",
"value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageName'),';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageName')), '2015-05-01-preview').key1)]"
},
{
"name": …Run Code Online (Sandbox Code Playgroud) 我无法从用 Javascript 编写的 Azure 函数中找到有关如何管理数据库连接(在我的例子中是 MongoDB)的明确信息。
下面的 Microsoft 文档说不要使用 C# 中的静态变量为每个函数调用创建连接,使用 .NET Framework Data Provider for SQL Server,池由客户端连接处理。它没有描述如何在 Javascript 中执行此操作。
https://docs.microsoft.com/en-us/azure/azure-functions/manage-connections
此处描述了创建全局变量以在调用之间保存数据库客户端的解决方案,但作者不确定这是正确的方法。
http://thecodebarbarian.com/getting-started-with-azure-functions-and-mongodb.html
有没有人在生产中使用过它或了解这是否是正确的方法?
我需要使用 azure 函数按计划运行 powershell 脚本,我尝试使用 node.js 执行该文件,但它不起作用,我不知道为什么。
我们知道可以从local.setting.json文件使用事件中心的Connection字符串。因此,对于不同环境中的同一功能应用程序,我可以在azure门户的“应用程序设置”中添加事件中心连接字符串设置。
由于EventHubTrigger函数应用程序还将事件名称和使用者组(可选)用作属性参数,我想知道如何从应用程序设置中使用事件中心名称和使用者组?
public static void EventHubTriggerFunc([EventHubTrigger("myeventhubname", Connection = "EventHubConnectionAppSetting", ConsumerGroup = "myconsumergroupname")] EventData myEventHubMessage, DateTime enqueuedTimeUtc, Int64 sequenceNumber, string offset, ILogger log)
{
// Here EventHubConnectionAppSetting is specified in local.setting.json file
//myeventhubname & myconsumergroupname are hard coded string
}
Run Code Online (Sandbox Code Playgroud)
本地设置
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"EventHubConnectionAppSetting": "Endpoint=.....",
"EventHubConsumerGroup": "myconsumergroup"
}
}
Run Code Online (Sandbox Code Playgroud) 持久函数是否会在活动被调用之前唤醒?
我是关于实现调度程序的,而是使用其他库,例如 Hangfire 或 Quartz。我想实现作为调度程序的持久功能。我缺少的部分是,函数中发生了什么?该函数是否在下一次活动调用之前大喊大叫?每一项都叫执行?
[FunctionName("SchedulerRouter")]
public static async Task<HttpResponseMessage> HttpStart(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")]HttpRequestMessage req,
[OrchestrationClient]DurableOrchestrationClient starter, ILogger log)
{
var data = await req.Content.ReadAsAsync<JObject>();
var instanceId = await starter.StartNewAsync(FunctionsConsts.MAIN_DURABLE_SCHEDULER_NAME, data);
return starter.CreateCheckStatusResponse(req, instanceId);
}
Run Code Online (Sandbox Code Playgroud) 我有很多天蓝色的功能。我想将每个 azure 函数的日志存储在一个位置。我首先将所有日志存储在 azure append blob 中。但现在我想实时存储和可视化。我找到了一些解决方案,如loggly.com的集中式解决方案。天蓝色有什么解决方案吗?如果是,那是什么?如果没有,我还有什么其他选择?
logging azure centralized azure-application-insights azure-functions
azure-functions ×10
azure ×6
.net-core ×1
architecture ×1
c# ×1
c#-4.0 ×1
centralized ×1
javascript ×1
lifecycle ×1
logging ×1
mongodb ×1
mongoose ×1
networking ×1
node.js ×1
powershell ×1