我正在尝试将此示例项目构建为Azure功能,它需要一些软件包https://github.com/OfficeDev/O365-Nodejs-Microsoft-Graph-App-only
我可以看到我可以使用https://azure.microsoft.com/en-us/documentation/articles/functions-reference/#nodejavascript-api在NodeJS Azure功能中使用数据包管理
我试着用这个
var request = require('request');
Run Code Online (Sandbox Code Playgroud)
这个说法
You can include packages in your function directory (i.e. via npm install) and then import them to your function in the usual ways (i.e. via require('packagename'))
Run Code Online (Sandbox Code Playgroud)
所以我在其中创建了一个project.json,就像C#Azure Function使用的那样:
{
"frameworks": {
"net46":{
"dependencies": {
"chalk": "^1.1.1",
"q": "^1.4.1",
"request": "^2.67.0"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
并得到此错误
2016-04-06T19:49:42.026 Exception while executing function: Functions.MicrosoftGraphWebHookNode. mscorlib: One or more errors occurred. Error: Cannot find module 'request'
at Function.Module._resolveFilename (module.js:339:15)
at Function.Module._load (module.js:290:25) …Run Code Online (Sandbox Code Playgroud) 我们在vue.js应用程序中使用axios来访问Azure功能.现在我们收到这个错误:
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://localhost:8080' is therefore not allowed access.
Run Code Online (Sandbox Code Playgroud)
我们试图以这种方式在函数中设置响应头:
context.res = {
body: response.data,
headers: {
'Access-Control-Allow-Credentials': 'true',
'Access-Control-Allow-Origin': 'http://localhost:8080',
'Access-Control-Allow-Methods': 'GET',
'Access-Control-Request-Headers': 'X-Custom-Header'
}
}
Run Code Online (Sandbox Code Playgroud)
有没有人遇到过这个错误?
我们想为服务总线消息触发器编写单元测试。我们正在使用Azure.Messaging.ServiceBus nuget 包
[FunctionName("serviebustrigger")]
public async Task Run ([ServiceBusTrigger("xxxxtopic", "xxxxsubscription", Connection = "Abs-Connection", AutoCompleteMessages = false)] ServiceBusReceivedMessage message, ServiceBusMessageActions messageActions)
{
_logger.LogInformation($"{nameof(Run)} execution started for MessageId:{{MessageId}}", message.MessageId);
try
{
//some code
await messageActions.CompleteMessageAsync(message);
}
catch (Exception ex)
{
await messageActions.DeadLetterMessageAsync(message);
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想为上面的代码编写单元测试。但我无法模拟ServiceBusReceivedMessage 和 ServiceBusMessageActions ,因为它们具有内部构造函数。有人可以建议我更好的方法来编写单元测试
目前,我们正在AWS Beanstalk上运行我们的应用程序,但正在尝试确定Azure的适用性.
我们最大的问题是我们支付但未使用的CPU时间浪费.我们在t2.small实例上运行,因为它们具有我们需要的最小RAM量,但我们从不使用分配的基本CPU时间量.(对于t2.small来说是20%)我们在当天的短暂爆发期间需要大量的CPU功率,并且在此之前提供更多实例,这是我们处理它的唯一方法.AWS Lambda对我们来说是一个很好的解决方案,但我们依赖于SAPI等Windows组件,因此我们必须在Windows VM中运行.
看看我们认为使用Web角色的Azure云服务最适合我们的应用程序,但似乎Web角色只不过是启用了IIS的Win 2012 VM.因此,随着应用程序的扩展,它只会带来更多这些虚拟机,这正是我们目前所拥有的.Azure是否有类似于Lambda的服务,您只需支付使用的CPU处理时间?我们使用CPU资源效率低的原因是我们的语音生成应用程序使用第三方语音丢失但在调用SAPI时只能运行单线程,因为语音引擎在多线程时容易崩溃.我们无法控制这个语音引擎.它必须能够访问系统注册表和Windows SAPI,因此理想的解决方案是以某种方式包装所有依赖项是一个包并将其部署到Azure上,然后启动它的多个实例.什么"这个"我不知道
是否可以限制并行运行的最大函数数量?
我阅读了文档并发现了这个:
当多个触发事件发生得比单线程函数运行时可以处理它们更快时,运行时可以并行多次调用该函数.
如果功能应用程序正在使用消费托管计划,则功能应用程序可以自动扩展.功能应用程序的每个实例,无论应用程序是在消费托管计划上运行还是在常规App Service托管计划上运行,都可以使用多个线程并行处理并发函数调用.
每个函数应用程序实例中的最大并发函数调用数根据所使用的触发器类型以及函数应用程序中其他函数使用的资源而有所不同.
https://docs.microsoft.com/en-gb/azure/azure-functions/functions-reference#parallel-execution
我正在使用带有Event Hub输入绑定的App Service计划上的Function,并且在我的Function App中只有一个Function.如果我不能限制它,有谁知道这种设置的并发函数调用的最大数量是多少?
我写了3个函数如下
在[3]函数中,我将调用[2]函数来获取用户使用Azure函数URL,如下所示: -
https://hdidownload.azurewebsites.net/api/getusers
有没有其他方法在没有完整路径的另一个Azure功能中调用Azure功能?
我正在学习微软的演练,学习如何使用 CosmosDb 为 azure 函数添加输入绑定,但是在调用该函数时,它不断返回内部服务器错误(500 http 代码)。
function.json 中 azure 函数的配置是:
{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "Request",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "Response"
},
{
"name": "bookmark",
"direction": "in",
"type": "cosmosDB",
"databaseName": "func-io-learn-db",
"collectionName": "Bookmarks",
"connectionStringSetting": "learn_DOCUMENTDB",
"id": "{id}",
"partitionKey": "{id}",
"sqlQuery": ""
}
]
}
Run Code Online (Sandbox Code Playgroud)
应用程序服务中有一个learn_DOCUMENTDB配置设置,它具有到 cosmos db 实例的有效连接字符串(自动创建)。
错误日志条目说:
无法将 CosmosDB 绑定到类型“System.String”。可能的原因:1) 尝试绑定到 'Microsoft.Azure.Documents.Client.DocumentClient, Microsoft.Azure.DocumentDB.Core, Version=2.9.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 但用户类型程序集是 …
我有一个功能应用程序有3个功能,其中一个定时器每2分钟触发一次.我观察到一段时间后,该函数停止被触发,但是当我进入门户时重新启动.
据我了解,原因是默认情况下,"Always On"已关闭.但是,当我转到应用程序设置/常规设置时,我无法激活灰色的"开启"状态.我可以取消选中"关闭",这似乎不会粘住或激活"开启".
我错过了一些明显的东西吗 是永远 - 解决我的问题的解决方案,还是我应该做的其他事情?
注意:函数是用F#编写的; 我怀疑这很重要,但我想我会提到它以防万一.
我需要绑定到输出blob,但blob路径需要在我的函数中动态计算.我该怎么做?
在过去的24小时里,我一直在阅读有关如何创建Azure功能的所有内容,并已成功将MVC WebApi转换为具有多个功能的新功能应用程序.我的问题是我没有找到任何关于如何使用它们进行最基本的身份验证的明确文档或教程.
我的情景很简单.在我的AAD中配置用户,然后授予这些用户访问特定功能的权限.网站上的用户将点击UI元素,这些元素又会触发调用我的Azure功能的Javascript.在函数中,我需要能够以某种方式验证它们的身份,因为我将把它传递给与SQL实例交互的其他函数.
有人可以指点我的文档,文章,一个例子,一些东西,这表明我如何实现这一目标?
为了记录,我在门户网站上找到了我的功能应用程序的"身份验证"配置,并选择了AAD作为我的身份验证提供程序.我已经添加了我的功能应用程序并配置了一些用户.然后我编写了以下测试函数:
[FunctionName("GetThings")]
public static HttpResponseMessage Run([HttpTrigger(AuthorizationLevel.User, "GET", Route = null)]HttpRequestMessage req, TraceWriter log)
{
log.Info("Getting all the things");
var identity = ClaimsPrincipal.Current.Identity;
return identity.IsAuthenticated ?
req.CreateResponse(HttpStatusCode.Unauthorized, "Not authenticated!") :
req.CreateResponse(HttpStatusCode.OK, $"Hi {identity.Name}!");
}
Run Code Online (Sandbox Code Playgroud)
目前,当我尝试直接点击端点时,我会被重定向到登录页面......所以我猜这部分是有效的.我如何生成/检索用户令牌,将请求发送到函数或在服务器上处理它们并不清楚.
救命?