当前位置: 首页 > 知识库问答 >
问题:

如何在Visual Studio代码中创建和部署函数应用程序?

陶高峯
2023-03-14

要求创建一个Azure函数,该函数监控到IoT中心的所有传入消息,并在对消息进行一些修改后将其发送到Cosmos数据库

体系结构

问题:无法创建Azure函数,该函数将传入消息读取到IoT Hub并发送到Cosmos DB

遵循的步骤

我已按照以下步骤使用 Visual Studio Code 创建和部署 Azure 函数应用

>

  • 打开Visual Studio代码
  • 转到Azure扩展面板

    已选择 C# 语言

    它创建了以下文件

    • 。vscode
    • 。gitignore
    • FunctionApps。csproj
    • 主持人。json
    • localsettings.json

    现在我已经单击了Visual Studio Code中的“创建函数”按钮并选择了CosmosDBTrigger并映射了已经在Azure门户中创建的CosmoDB。它在c#class下面生成

    namespace Company.Function
    {
     public static class CosmosDBTriggerCSharp
     {
     [FunctionName("CosmosDBTriggerCSharp")]
     public static void Run([CosmosDBTrigger(
        databaseName: "databaseName",
        collectionName: "collectionName",
        ConnectionStringSetting = "dev-test-cosmo-db_DOCUMENTDB",
        LeaseCollectionName = "leases")]IReadOnlyList<Document> input, ILogger log)
        {
        if (input != null && input.Count > 0)
        {
            log.LogInformation("Documents modified " + input.Count);
            log.LogInformation("First document Id " + input[0].Id);
        }
       }
      }
    }
    

    现在,我必须通过键入“deploy to function app”并运行Azure函数:deploy to function app命令来部署函数(Ctrl Shift P)。

    我在Visual Studio code 终端中看到< Code >成功消息

      3:09:06 PM liveConnectMessageEnhancefunapp: Creating zip package...
      3:09:07 PM liveConnectMessageEnhancefunapp: Starting deployment...
      3:09:18 PM liveConnectMessageEnhancefunapp: Updating submodules.
      3:09:19 PM liveConnectMessageEnhancefunapp: Preparing deployment for commit id 'f58cf57151'.
      3:09:21 PM liveConnectMessageEnhancefunapp: Skipping build. Project type: Run-From-Zip
      3:09:21 PM liveConnectMessageEnhancefunapp: Skipping post build. Project type: Run-From-Zip
      3:09:24 PM messageEnhancefunapp: Syncing 0 function triggers with payload size 2 bytes successful.
      3:09:25 PM messageEnhancefunapp: Updating D:\home\data\SitePackages\packagename.txt with deployment 20190110093910.zip
      3:09:25 PM messageEnhancefunapp: Deployment successful.
      Deployment to "messageEnhancefunapp" completed.
    

    警告

    C:\用户\deeku.nuget\包\microsoft.net.sdk.functions\1.0.24\build\netStandard ard1.0\Microsoft.NET.Sdk.Functions.Build.targets(41,5):警告:函数[CosmosDBTriggerCSharp]:local.settings.json.中的AzureWebJobStorage缺少值这是HTTP以外的所有触发器所必需的。[C:\FunctionApps\FunctionApps.csproj]C:\用户\deeku.nuget\包\microsoft.net.sdk.functions\1.0.24\build\netStandard ard1.0\Microsoft.NET.Sdk.Functions.Build.targets(41,5):警告:[C:\FunctionApps\FunctionApps.csproj]

    但是当我导航到< code>Azure Portal时,我看到以下消息

    您的应用程序当前处于只读模式,因为您正在从包文件运行。从包运行时,文件系统是只读的,不能对文件进行任何更改。要进行任何更改,请更新zip文件中的内容并WEBSITE_RUN_FROM_PACKAGE应用程序设置。

  • 共有1个答案

    秦建元
    2023-03-14

    在您的示例中,您正在创建CosmosDBTrigger,如果您想捕获cosmos DB中的更改,可以使用它。但是,根据您的描述,您希望捕获IoT Hub中的更改。

    我在Visual Studio代码中找不到物联网集线器触发器,但如果您使用的是Visual Studio的完整版本,您可以在那里找到物联网集线器触发器:

    您只需在该屏幕上设置连接,在该方法中,您将收到来自物联网集线器的消息,您可以根据需要进行修改,并将其保存到Cosmos DB。

    以下是一篇关于同一主题的类似博客文章:https://medium.com/@avirup171/azure-iot-hub-azure-Function-azure-cosmos-db-走查-c30d12d1055

     类似资料:
    • 我似乎找不到任何关于如何在我的IBM Social Business SmartCloud站点中注册/部署应用程序的文档。这是在他们的云服务器上,而不是我自己的本地主机上。 我使用IBM SmartCloud Engage演示帐户订阅创建了一个Admin AppDeveloper用户帐户。我基本上是在尝试将HelloWorld iWidget添加到某个应用程序菜单中,但找不到注册/添加的位置,因此

    • 问题内容: 在Glassfish 4上部署“ myapp.war”之前,我必须 创建jdbc连接池(/WEB-INF/glassfish-resources.xml-> 本身不起作用…从asadmin正常) 为池创建jdbc资源(/WEB-INF/glassfish-resources.xml-> 与上述相同) 创建auth-realm(什么也不会自动,现在使用asadmin) 创建模式(peri

    • 我正在研究Terraform以及如何使用它来设置AWS环境。到目前为止,我已经有了用3个公共子网、3个私有子网、一个互联网网关和3个Nat网关设置VPC的脚本。然而,我对如何在私有子网中部署和重新部署应用程序感到困惑? 在我的场景中,我们使用Spring Boot构建微服务。我们的想法是转移到一种状态,在这种状态下,我们可以将弹性负载平衡器连接到公共子网,并在私有子网中的自动缩放组中承载我们的应用

    • 问题内容: 谁能帮助我在IIS 6上运行Flask应用程序?我曾尝试使用isapi-wsgi,但是当我访问虚拟目录地址时,会得到一个页面,显示“找不到指定的模块”。还有其他选择吗? 以下是我为isapi-wsgi编写的Python脚本。已创建虚拟目录,并且在IIS管理器中一切正常,但该站点无法正常工作。 问题答案: 高层概述 HTTP-> IIS-> ISAPI-> FastCGI-> WSGI(

    • 我想在服务器上部署一个spring mvc中的Java web app build。我使用的是MilesWeb服务器。在尝试将应用程序部署到服务器后,我收到了以下异常日志,描述如下:“服务器遇到内部错误,导致无法满足此请求”。我需要帮助来找出我做错了什么。 你可以检查这个链接后,点击提交我得到上面的错误

    • 我试图找到一个解决方案,在Kubernetes部署的应用程序中运行cron作业,而不会出现不必要的重复。让我描述一下我的场景,给你一点背景。 我想安排在指定日期执行一次的作业。更准确地说:创建这样一个作业可以在任何时候发生,它的执行日期只有在那个时候才知道。需要做的工作总是一样的,但是需要参数化。 我的应用程序在库伯内特斯集群中运行,我不能假设在任何时候都只有一个实例在运行。因此,创建所述作业将导