我正在尝试使用Cosmos DB输入绑定运行http触发器Azure功能.我希望http触发器的url在查询字符串上包含几个参数,这些参数绑定到输入Cosmos DB绑定的SQL查询.我正在尝试以下绑定function.json,但它不起作用(该功能甚至没有被触发):
{
"direction": "in",
"type": "httpTrigger",
"authLevel": "anonymous",
"name": "req",
"methods": [ "get" ],
"route": "users/{age=age?}/{gender=gender?}"
},
{
"direction": "in",
"type": "documentDB",
"name": "users",
"databaseName": "Database",
"collectionName": "Users",
"sqlQuery": "SELECT * FROM x where x.age = {age} and x.gender = {gender}",
"connection": "COSMOSDB_CONNECTION_STRING"
},
Run Code Online (Sandbox Code Playgroud)
根据此答案,路由约束users/{age=age?}/{gender=gender?}对Web API有效,根据文档, 您可以将任何Web API路径约束与您的参数一起使用.最后,我想向Azure函数发出一个GET请求api/users?age=30&gender=male.那怎么办呢?
azure azure-functions azure-cosmosdb azure-functions-runtime
我有一个由ARM模板使用Azure DevOps管道部署的Azure Functions(2.0)实例。我有另一个管道,通过zip部署将功能应用程序部署到实例。这几乎可以完美地工作,但是,如果我将功能Infrastructure部署为Code,然后部署应用程序,然后将Infrastructure部署为Code,则我的功能应用程序将被删除,所有功能都将消失。我正在使用增量部署,所以我想知道为什么这样做。关于它为什么会这样或如何进行故障排除的任何想法?
我已经在下面复制了资源组部署脚本和ARM模板。
New-AzureRmResourceGroupDeployment -Name ((Get-ChildItem $TemplateFile).BaseName + '-' + ((Get-Date).ToUniversalTime()).ToString('MMdd-HHmm')) `
-ResourceGroupName $ResourceGroupName `
-TemplateFile $TemplateFile `
-TemplateParameterFile $TemplateParametersFile `
-Mode Incremental `
@OptionalParameters `
-Force -Verbose `
-AdminsGroup $AdminsGroup `
-AdminsGroupObjectId $AdminsGroupObjectId `
-ErrorVariable ErrorMessages
Run Code Online (Sandbox Code Playgroud)
ARM模板
{
"type": "Microsoft.Web/serverfarms",
"sku": {
"name": "Y1",
"tier": "Dynamic",
"size": "Y1",
"family": "Y",
"capacity": 0
},
"kind": "app",
"apiVersion": "2016-09-01",
"name": "[variables('FunctionPlanNameMyStuff')]",
"location": "[resourceGroup().location]",
"properties": {
"name": "[variables('FunctionPlanNameMyStuff')]",
"perSiteScaling": false,
"reserved": false,
"targetWorkerCount": 0,
"targetWorkerSizeId": 0
}
},
{
"comments": "MyStuff …Run Code Online (Sandbox Code Playgroud) azure-resource-manager azure-devops azure-functions azure-functions-runtime azure-functions-core-tools
根据我的理解 Azure 函数将执行
如果RunOnStartup = true
1. on startup
2. if a host changed
3. a new deployment happen
4. on schedule time
Run Code Online (Sandbox Code Playgroud)
并且,如果RunOnStartup = false 或未定义
1. on schedule time only
Run Code Online (Sandbox Code Playgroud)
但是当我使用RunOnStartup = false在本地运行它时,它也在启动时执行,并且在 azure 门户上运行良好。任何人都可以请建议为什么会发生?
更新:- 功能代码:-
public static void Run([TimerTrigger("0 30 3 * * *", RunOnStartup = false)]TimerInfo myTimer, TraceWriter log, ExecutionContext executionContext)
{
log.Info($"Function1- Timer trigger function executed at: {DateTime.Now}");
try
{
//main work
}
catch (Exception ex)
{
log.Error(ex.Message, ex);
} …Run Code Online (Sandbox Code Playgroud) azure azure-functions azure-functions-runtime azure-functions-core-tools
既然 .Net Core 3.0 已经发布了 core3 上 Azure Functions 的故事?
当我尝试将项目翻转到<TargetFramework>netcoreapp3.0</TargetFramework>它时,
它仍然报告为在 2.2 上运行。
如果我尝试访问 3.0 的 api,它只会爆炸,这是有道理的,因为尽管有项目设置,它似乎仍在强制运行。
我正在 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 函数来生成一个 JWT 令牌并将其返回给客户端。该代码在控制台应用程序中进行了本地测试,并且似乎一切正常。这是工作控制台应用程序和我的函数应用程序中包含的包参考:
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="5.2.1" />
在本地运行函数主机func host start并执行代码时,会导致错误:
Could not load file or assembly 'Microsoft.IdentityModel.Tokens, Version=5.2.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'."
我不明白为什么会发生这种情况,dll 与我的应用程序 dll 一起放在输出文件夹中。我唯一能想到的另一件事是,函数主机有自己的一组包,它来自它的源,而这个包尚不可用,仅在 12 天前发布。
我不知道。关于为什么会发生这种情况或如何解决它的任何帮助?
详细信息:
Azure Functions Core Tools (2.0.1-beta.22)
函数运行时版本:2.0.11415.0
如果我想在开发环境中启动所有可用的功能,我只需执行以下操作:
func host start
Run Code Online (Sandbox Code Playgroud)
有没有办法选择可用功能的子集,而不必将打算停用的功能移出工作目录等?
PS 我使用 Python 作为函数本身。
参考官方文档
如果在 Azure 中运行时不存在此应用程序设置,则假定环境为生产环境。
即使在覆盖AZURE_FUNCTIONS_ENVIRONMENT并ASPNETCORE_ENVIRONMENT进入生产之后,我仍然在 Azure 中进行开发。
我的 Azure Function 是在 Windows 环境上运行的无服务器消费计划,运行时版本 ~3。
(!) 问题无法在本地重现。
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 …
azure-functions ×10
azure ×6
.net-core ×1
azure-devops ×1
c# ×1
node.js ×1
swagger ×1
swagger-2.0 ×1