簡體   English   中英

Java中的Azure函數使用function.json配置

[英]azure function in java configure using function.json

我正在嘗試創建用Java編寫並使用function.json文件(而不是使用注釋)進行配置的Azure函數。

首先,我遵循了MS 教程 (可以正常運行)。

接下來,我想修改類刪除功能注釋和補充指示的function.json 這里的部分“同樣的功能沒有寫注釋”。

該類源代碼現在為:

public class Function {

    public static String hello(String req, ExecutionContext context) {
        return String.format("Hi, %s!", req);
    }

}

我的function.json文件是

{
    "scriptFile": "ServiceBusQueueMsgToLogWriter-1.0-SNAPSHOT.jar",
    "entryPoint": "com.oneadvanced.adv365.mgdsvc.azure.func.test1.Function.hello",
    "bindings": [
    {
        "type": "httpTrigger",
        "name": "req",
        "direction": "in",
        "authLevel": "anonymous",
        "methods": [ "post" ]
    },
    {
        "type": "http",
        "name": "$return",
        "direction": "out"
    }
    ]
}

運行命令的輸出:

mvn clean package

包括輸出:

AI: INFO 12-10-2017 21:50, 1: Configuration file has been successfully found as resource
AI: INFO 12-10-2017 21:51, 1: Configuration file has been successfully found as resource
[INFO]
[INFO] Step 1 of 6: Searching for Azure Function entry points
[INFO] Reflections took 33 ms to scan 1 urls, producing 0 keys and 0 values
[INFO] 0 Azure Function entry point(s) found.
[INFO]
[INFO] Step 2 of 6: Generating Azure Function configurations
[INFO] No Azure Functions found. Skip configuration generation.

這讓我想知道function.json文件是否不在正確的位置...

是否有人知道將Java寫的Azure函數的function.json文件放在正確的位置?

我試過了:

  • 在項目的根源
  • 在src / main / resources中(我認為這將是典型的Java / Maven項目中此類事情的標准位置)
  • 與Java源文件位於同一文件夾中

在每種情況下相同的結果:(

如果有任何關於我應該做什么的指示,我將不勝感激。

謝謝,安迪

給定功能應用程序中所有功能的代碼都位於一個根文件夾中,該文件夾包含一個主機配置文件和一個或多個子文件夾,每個子文件夾都包含一個單獨功能的代碼。

示例結構

wwwroot
 | - host.json
 | - mynodefunction
 | | - function.json
 | | - index.js
 | | - node_modules
 | | | - ... packages ...
 | | - package.json
 | - mycsharpfunction
 | | - function.json
 | | - run.csx

您可以從官方文檔中找到上述說明。

但是,我注意到您的function.json文件未設置disabled屬性。 disabled屬性設置為false以啟用此處提到的功能。

{
  "bindings": [
    {
      "name": "myBlob",
      "type": "blobTrigger",
      "direction": "in",
      "path": "jaygong/test",
      "connection": "AzureWebJobsStorage"
    }
  ],
  "disabled": false
}

更新答案:

我嘗試通過配置function.json提供的步驟創建自己的azure函數,並重現了您的問題!

我的功能代碼:

package cn.gjj;

public class Function {
    public static String hello(String in) {
        return in;
    }
}

我的功能測試代碼:

package cn.gjj;

import org.junit.Test;

import static org.junit.Assert.assertEquals;

/**
 * Unit test for Function class.
 */
public class FunctionTest {
    /**
     * Unit test for hello method.
     */
    @Test
    public void testHello() throws Exception {
        final Function function = new Function();

        final String ret = function.hello("function");

        assertEquals("function", ret);
    }
}

我的function.json文件:

{
  "scriptFile": "JayGongTestAzureFunction-1.0-SNAPSHOT.jar",
  "entryPoint": "cn.gjj.Function.echo",
  "bindings": [
    {
      "type": "httpTrigger",
      "name": "req",
      "direction": "in",
      "authLevel": "anonymous",
      "methods": [ "post" ]
    },
    {
      "type": "http",
      "name": "$return",
      "direction": "out"
    }
  ]
}

當我運行命令mvn clean package ,日志顯示為與您相同。

AI: INFO 17-10-2017 14:07, 1: Configuration file has been successfully found as resource
AI: INFO 17-10-2017 14:07, 1: Configuration file has been successfully found as resource
[INFO]
[INFO] Step 1 of 6: Searching for Azure Function entry points
[INFO] Reflections took 31 ms to scan 1 urls, producing 0 keys and 0 values
[INFO] 0 Azure Function entry point(s) found.
[INFO]
[INFO] Step 2 of 6: Generating Azure Function configurations
[INFO] No Azure Functions found. Skip configuration generation.
[INFO]
[INFO] Step 3 of 6: Validating generated configurations
[INFO] No configurations found. Skip validation.
[INFO]
[INFO] Step 4 of 6: Saving empty host.json
[INFO] Successfully saved to E:\TestAzureFunction\JayGongTestAzureFunction\target\azure-functions\jaygongtestazurefunction-20171017132623892\host.json
[INFO]
[INFO] Step 5 of 6: Saving configurations to function.json
[INFO] No configurations found. Skip save.
[INFO]
[INFO] Step 6 of 6: Copying JARs to staging directory E:\TestAzureFunction\JayGongTestAzureFunction\target\azure-functions\jaygongtestazurefunction-20171017132623892

經過對function.json配置方式和annotations方式的仔細比較,我發現Project/target/azure-functions/functionName/文件夾的目錄不同。

annotations方式:

在此處輸入圖片說明

function.json配置方式:

在此處輸入圖片說明

請注意,如果在mvn compile后未找到function.json文件,請在pom.xml文件中添加以下關鍵行。

<resources>
  <resource>
    <directory>${project.basedir}</directory>
       <includes>
          <include>host.json</include>
          <include>local.settings.json</include>
          **<include>function.json</include>**
       </includes>
    </resource>
</resources>

解:

創建一個工作文件夾並將您的function.json文件移到其中,然后它對我function.json

在此處輸入圖片說明

請試一試。

希望對您有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM