我希望能够控制Azure功能在运行时读取的服务总线队列或订阅的名称.
使用WebJobs(Azure Functions基于),您可以通过实现和配置自定义来执行此操作INameResolver,请参阅:如何为Web作业处理创建基于配置的队列名称?
但是,使用Azure功能,我无权连接JobHostConfiguration此自定义解析程序.
我还可以使用INameResolver,如果是这样的话怎么样?
azure azureservicebus azure-functions azure-functions-runtime
我正在 VS2017 5.13(预览版)中开发 Azure Functions,我想从我从 azure 门户生成的 OpenAPI(又名 swagger)生成项目文档。Visual Studio 不生成该文件,因此我从 azure 门户网站获取了初始文件,但我希望自动从代码中更新此文件。
是否有关于如何集成 swagger json 文件以从 VS 2017 中的代码生成文档的官方演练?
azure swagger swagger-2.0 azure-functions azure-functions-runtime
我有一个 Azure 基础结构:
2 个 HTTP 函数 -> 事件中心 -> 2 个函数 -> 表存储
(所以两个http函数向事件中心发送消息,两个函数在事件中心由消息触发,其中一个将消息保存在表存储中)
基础结构每天由 Azure ARM 模板使用 Azure CLI 自动创建。最近两个月我没有改变逻辑,但自 4 月初以来,我注意到了新的、奇怪的行为。
在设置结束时,会自动执行 E2E 测试。他们正在发送一些消息,一段时间后他们检查消息是否在表存储中。
这就是问题所在:自 4 月初以来,这些测试几乎总是失败!而且我没有更改函数逻辑或模板.json 的基础设施逻辑。
看起来应该由事件中心触发的函数根本没有执行!我已经找到了解决方法 - 如果我转到 Azure 门户并手动运行这些功能(代码编辑器上方的“运行”按钮),那么这些功能终于开始工作了!
有没有其他人遇到这个问题?是否有某种方法可以通过例如 Azure CLI 或 REST 接口自动、直接运行非 HTTP 触发的功能?
azure azure-eventhub azure-functions azure-functions-runtime
我们正在尝试将azure函数迁移到sdk.functions 1.0.21,我们将所有内容升级到3.0.0-rc1.控制台提示我们TraceWriter已经过时并使用了ILogger.但是,我们一直在遇到问题.
这是我正在使用的代码:
code.cs:public static async Task Run(Message queueItem, ILogger log, ExecutionContext context){
using (var scope = Resolver.CreateScope())
{
var timer = new Stopwatch();
try
{
var resolver = scope.ServiceProvider;
logger = resolver.GetService<IBestLogger>().WithInvocationId(context);
client = resolver.GetService<IServiceBusFactory>().GetClient(logger, _queue, _failedQueue);
auditRepository = resolver.GetService<ITplTransactionAuditRepository>();
asnService = resolver.GetService<IAsnService>();
var sfWmsService = resolver.GetService<ISnapfulfilWmsService>();
logger.CreateContext($"{_queue} process is started for message id.").WithServiceBusMessage(queueItem).LogInformation();
}
}
catch (Exception ex2)
{
errorMessage = $"Unable to set record to Error status for message id {queueItem.MessageId} …Run Code Online (Sandbox Code Playgroud) c# azure azure-functions azure-functions-runtime azure-functions-core-tools
我正在 Docker 容器中使用 Http 触发的 Azure 函数。到目前为止,我在设置此设置时找到的所有教程和指南都将 Azure 函数配置authLevel"为anonymous.
仔细阅读此博客后,似乎也可以(虽然棘手)配置其他身份验证级别。不幸的是,承诺的后续博客文章尚未(尚未)编写。
谁能帮我澄清一下我将如何进行设置?
我确实遵循了https://docs.microsoft.com/da-dk/azure/azure-functions/functions-host-json#functiontimeout 中提到的指南,将应用服务计划中函数应用主机的默认超时时间从 30 分钟增加到通过使用 "functionTimeout": "02:00:00" 更新主机文件到 2h
在检查函数应用程序的事件查看器日志时,我可以看到超时限制仍然是 30m。添加错误信息以供参考,
<EventData>
<Data>Application: w3wp.exe
CoreCLR Version: 4.6.27317.7
Description: The process was terminated due to an unhandled exception.
Exception Info: Microsoft.Azure.WebJobs.Host.FunctionTimeoutException: Timeout value of 00:30:00 was exceeded by function: CreateRequestApplicationPostProcessor
at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.TryHandleTimeoutAsync(Task invokeTask, CancellationToken shutdownToken, Boolean throwOnTimeout, CancellationToken timeoutToken, TimeSpan timeoutInterval, IFunctionInstance instance, Action onTimeout) in C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Executors\FunctionExecutor.cs:line 631
at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.InvokeAsync(IFunctionInvoker invoker, ParameterHelper parameterHelper, CancellationTokenSource timeoutTokenSource, CancellationTokenSource functionCancellationTokenSource, Boolean throwOnTimeout, TimeSpan timerInterval, IFunctionInstance instance) in C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Executors\FunctionExecutor.cs:line 547
at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.ExecuteWithWatchersAsync(IFunctionInstance instance, ParameterHelper …Run Code Online (Sandbox Code Playgroud) 我一直在阅读有关此的各种文档,但无法清楚地确认我的理解,我们正在评估 Azure Functions 高级计划并希望更清楚地了解成本。
我的理解如下:
在高级计划中,我们可以配置最小实例数和突发大小。这是 Premium Plan 实例预留池的最小和最大大小(假设它是 SKU EP2)。假设我将最小实例数设置为 3,突发大小设置为 10。
配置的最小值(在本例中为 3)意味着有 3 个 EP2 一直在运行,即使它们没有做任何事情,我也要为此付费。
在我的函数应用程序中,我指定我需要 2 个预热的函数实例。我还为这些预热和等待请求付费。
请求开始进来,现在我还要为预热实例中的执行时间(按内核和内存使用)付费。
我上面的理解正确吗?此处相关的总成本是否如下:
(3 个 EP2 固定成本 + 最多 10 个 EP2 最大突发)+(2 个预热实例 + 额外的消费实例)+(请求执行)
我们如何为预热的实例收费?
(!) 问题无法在本地重现。
Azure 函数版本 ~4
节点版本 14.18.1
创建一个简单的 HTTP 触发的 Azure Function 并设置两个简单的属性,我们得到以下代码:
module.exports = async function (context, req) {
req.auth = {authField: 'some value'}
req.user = {userField: 'some value'}
context.log(`${JSON.stringify(req,null,2)}`);
context.res = {
body: 'responseMessage'
};
}
Run Code Online (Sandbox Code Playgroud)
记录器打印以下对象:
{
"method": "POST",
"url": "xxx",
"originalUrl": "xxx",
"headers": {
/// ...
},
"query": {},
"params": {},
"body": { "name": "Azure" },
"rawBody": "{\"name\":\"Azure\"}",
"auth": { "authField": "some value" }
}
Run Code Online (Sandbox Code Playgroud)
如您所见,只有authset 而不是 set user。在版本中可以看到相同的失败行为4.2.0。
当我使用 Azure …
我正在使用 host.json 文件中的以下配置在本地使用 QueueTrigger 测试我的 Azure 功能(面向 .Net Core 的 v2)
“队列”:{“batchSize”:1,“newBatchThreshold”:0}
目的是限制每个 Function App 实例一次只能处理一个队列 msg。
如果要最大程度地减少函数应用中队列触发函数的并行执行,可以将批处理大小设置为 1。此设置仅在函数应用在单个虚拟机 (VM) 上运行时消除并发。
在 host.json 文件中,有这些配置
{ "queues": { "maxPollingInterval": 2000, "visibilityTimeout": "00:00:30", "batchSize": 16, "maxDequeueCount": 5, "newBatchThreshold": 8 } }
在我们的例子中,我不是要消除并发性,而是要确保每个函数应用实例一次只能处理一个队列 msg。然后,如果我们横向扩展函数应用程序以在多个 VM 上运行,则保证每个 VM 一次仅处理一个队列 msg。更具体地说,计划是在应用服务计划下运行azure功能,而不是消耗计划(b/c你对消耗计划的控制很少),并设置Scale Out规则来监控队列,最多N 个实例 (VM)。这种设置允许我们让每个 VM 一次运行一个 azure 函数应用程序实例,最多 N 个 VM。
当我在本地测试时,我的 azure 函数总是同时从队列中获取多个消息,即使在 host.json 文件中使用“BatchSize: 1”配置也是如此。我想知道它是否是 b/c 我正在本地 Azure 函数运行时测试它。我还没有在 Azure 中测试过这个。希望它在 Azure 中按预期工作。
问题:使用 puppeteer 获取网站的屏幕截图。在开发计算机上运行良好,但在部署到云上的 Azure Functions 时抛出以下异常。
环境:在 Azure 上(节点 12、Linux、消费计划),使用服务总线主题触发的功能。
错误:
Result: Failure Exception: Error: Failed to launch the browser process! spawn
/home/site/wwwroot/node_modules/puppeteer/.local-chromium/linux-818858/chrome-linux/chrome
EACCES TROUBLESHOOTING: https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md
Stack: Error: Failed to launch the browser process!
spawn /home/site/wwwroot/node_modules/puppeteer/.local-chromium/linux-818858/chrome-linux/chrome
EACCES TROUBLESHOOTING: https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md
at onClose (/home/site/wwwroot/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:193:20)
at ChildProcess.<anonymous> (/home/site/wwwroot/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:185:85)
at ChildProcess.emit (events.js:314:20) at Process.ChildProcess._handle.onexit (internal/child_process.js:274:12)
at onErrorNT (internal/child_process.js:470:16) at processTicksAndRejections (internal/process/task_queues.js:84:21)
Run Code Online (Sandbox Code Playgroud)
我遵循了 puppeteer 故障排除文档中的建议,但仍然遇到相同的问题。
我尝试过的午餐设置
let browser = await puppeteer.launch({ ignoreDefaultArgs: ['--disable-extensions'] });
let browser = await puppeteer.launch({ headless: true, args: ['--no-sandbox', '--disable-setuid-sandbox'] }); …Run Code Online (Sandbox Code Playgroud) azure node.js azure-functions azure-functions-runtime puppeteer
azure-functions ×10
azure ×6
node.js ×2
c# ×1
docker ×1
puppeteer ×1
queuetrigger ×1
swagger ×1
swagger-2.0 ×1