如何用params调用azure函数

时间:2017-06-08 18:27:06

标签: azure azure-functions cron-task

我正在尝试使用Azure函数来调用具有不同时间和不同param(url)的相同函数。 我没有找到任何显示如何传递一些数据的好例子。我想传递链接到功能。 我的代码是:

var rp = require('request-promise');
var request = require('request');

module.exports = function (context //need to get the url) {  

和功能

{
  "bindings": [
    {
      "name": "myTimer",
      "type": "timerTrigger",
      "direction": "in",
      "schedule": "0 0 */1 * * *"
    }
  ],
  "disabled": false
}

2 个答案:

答案 0 :(得分:2)

如果您的设置是相对静态的(但您仍然不想对它们进行硬编码),您可以使用应用程序设置来存储它们,然后阅读,例如。

let url = process.env['MyUrl'];

如果应根据请求确定URL,您可以使用HTTP触发器并从查询参数中读取URL:

let url = req.query.myurl;

我不确定您使用参数化定时器触发功能究竟想要实现的目标。

答案 1 :(得分:0)

另一种可能性是,如果您的参数存储在某处,例如Azure Document DB(Cosmos)。

您仍然可以使用TimerTrigger来调用该函数,并包含一个DocumentDB输入绑定,允许您查询执行该函数所需的特定参数值。

这是一个由Timer触发的C#示例,带有DocumentDB输入绑定。注意:我使用最新的VS2017预览工具进行Azure功能。

[FunctionName("TimerTriggerCSharp")]
public static void Run(
   [TimerTrigger("0 */1 * * * *")]TimerInfo myTimer, TraceWriter log, 
   [DocumentDB("test-db-dev", "TestingCollection", SqlQuery = "select * from c where c.doc = \"Test\"")] IEnumerable<dynamic> incomingDocuments) 
 {..}

使用以下绑定json:

{
  "bindings": [
    {
      "name": "myTimer",
      "type": "timerTrigger",
      "direction": "in",
      "schedule": "0 */5 * * * *"
    },
    {
      "type": "documentDB",
      "name": "incomingDocuments",
      "databaseName": "test-db-dev",
      "collectionName": "TestingCollection",
      "sqlQuery": "select * from c where c.docType = \"Test\"",
      "connection": "my-testing_DOCUMENTDB",
      "direction": "in"
    }
  ],
  "disabled": false
}