如何通过绑定将记录从Azure函数添加到Azure表存储中?

时间:2018-11-09 23:34:50

标签: azure azure-functions azure-table-storage

我使用这些功能并在本地环境中运行Azure Functions。

  

Azure函数核心工具(2.0.3)

     

函数运行时版本:2.0.12115.0

     

azurite@2.7.0

我尝试按照Microsoft文档中的说明进行操作。 这是functions.json

{
  "bindings": [
    {
      "name": "input",
      "type": "httpTrigger",
      "direction": "in"
    },
    {
      "tableName": "Person",
      "connection": "MyStorageConnectionAppSetting",
      "name": "tableBinding",
      "type": "table",
      "direction": "out"
    }
  ],
  "disabled": false
}

这是local.settings.json

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "node",
    "MyStorageConnectionAppSetting": "UseDevelopmentStorage=true"
  }
}

这是index.js

module.exports = function (context) {

    context.bindings.tableBinding = [];

    for (var i = 1; i < 10; i++) {
        context.bindings.tableBinding.push({
            PartitionKey: "Test",
            RowKey: i.toString(),
            Name: "Name " + i
        });
    }

    context.done();
};

已安装扩展程序。

$ func extensions install -p Microsoft.Azure.WebJobs.Extensions.Storage --version 3.0.0

从mac终端运行功能,发送http请求,出现此错误。

  

System.Private.CoreLib:执行函数时发生异常:   功能测试。 Microsoft.Azure.WebJobs.Host:处理时出错   函数返回后的参数_binder :。   Microsoft.Azure.WebJobs.Extensions.Storage:未实现(HTTP   状态码501 :。 )。 Microsoft.WindowsAzure.Storage:未实现。

表存储错误

  

POST / devstoreaccount1 / $ batch 501 0.980 ms-45

有帮助吗?

1 个答案:

答案 0 :(得分:0)

UseDevelopmentStorage=true表示将功能设置为使用Storage emulator,该功能提供了一个本地环境,该环境可以模拟Azure存储Blob,队列和表服务以进行开发。但是不幸的是,它仅在Windows OS上可用,因此在Mac上获得了Not Implemented

解决方法是使用真实的存储帐户,按照tutorial获取连接字符串,如果您没有存储帐户,则可能必须先create one

还有一个建议是install最新的Azure Functions核心工具,现在是2.1.725。