java - Azure Java函数-502-错误网关

标签 java azure azure-functions

我已经创建了 Java azure 函数,如以下链接所示:

https://learn.microsoft.com/en-us/azure/azure-functions/functions-create-first-java-maven

Java 类:

package com.khan;

import java.util.*;
import com.microsoft.azure.serverless.functions.annotation.*;
import com.microsoft.azure.serverless.functions.*;

/**
 * Azure Functions with HTTP Trigger.
 */
public class Function {
    /**
     * This function listens at endpoint "/api/hello". Two ways to invoke it using "curl" command in bash:
     * 1. curl -d "HTTP Body" {your host}/api/hello
     * 2. curl {your host}/api/hello?name=HTTP%20Query
     */
    @FunctionName("hello")
    public HttpResponseMessage<String> hello(
            @HttpTrigger(name = "req", methods = {"get", "post"}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> request,
            final ExecutionContext context) {
                
        context.getLogger().info("Java HTTP trigger processed a request.");

        // Parse query parameter
        String query = request.getQueryParameters().get("name");
        String name = request.getBody().orElse(query);

        if (name == null) {
            return request.createResponse(400, "Please pass a name on the query string or in the request body");
        } else {
            return request.createResponse(200, "Hello, " + name);
        }
                
    }
}

函数创建并成功部署

enter image description here

现在当我尝试使用curl访问时

curl -w '\n' https://sundaydemo-20180526141357482.azurewebsites.net -d AzureFunctions

or postman 

https://sundaydemo-20180526141357482.azurewebsites.net/api/hello

然后出现以下错误,我想知道是否有人遇到相同的错误。

502-Bad Gateway

The specified CGI application encountered an error and the server terminated the process.

日志:

2018-05-31T02:02:50  Welcome, you are now connected to log-streaming service.
2018-05-31T02:03:50  No new trace in the past 1 min(s).
2018-05-31T02:04:50  No new trace in the past 2 min(s).
2018-05-31T02:05:50  No new trace in the past 3 min(s).
2018-05-31T02:06:50  No new trace in the past 4 min(s).
2018-05-31T02:07:50  No new trace in the past 5 min(s).
2018-05-31T02:08:50  No new trace in the past 6 min(s).
2018-05-31T02:09:17.161 [Information] Executing 'Functions.hello' (Reason='This function was programmatically called via the host APIs.', Id=b43d17c9-35c0-4c84-ab7e-26a8ec721fe9)
2018-05-31T02:10:50  No new trace in the past 1 min(s).
2018-05-31T02:11:50  No new trace in the past 2 min(s).
2018-05-31T02:12:50  No new trace in the past 3 min(s).
2018-05-31T02:13:50  No new trace in the past 4 min(s).
2018-05-31T02:14:17.183 [Error] Timeout value of 00:05:00 exceeded by function 'Functions.hello' (Id: 'b43d17c9-35c0-4c84-ab7e-26a8ec721fe9'). Initiating cancellation.
2018-05-31T02:14:17.451 [Error] Microsoft.Azure.WebJobs.Host: Timeout value of 00:05:00 was exceeded by function: Functions.hello.
2018-05-31T02:14:17.572 [Error] Executed 'Functions.hello' (Failed, Id=b43d17c9-35c0-4c84-ab7e-26a8ec721fe9)
2018-05-31T02:15:50  No new trace in the past 1 min(s).
2018-05-31T02:16:50  No new trace in the past 2 min(s).
2018-05-31T02:17:50  No new trace in the past 3 min(s).
2018-05-31T02:18:50  No new trace in the past 4 min(s).

enter image description here

enter image description here

enter image description here

enter image description here

还尝试删除所有并添加 CORS *

enter image description here

存储:

enter image description here

enter image description here

最佳答案

看来你见过Function Runtime 2.0 Preview Breaking Change .

在门户上,函数运行时已更新至 2.0.11857.0(检查您的函数应用设置面板)。虽然maven插件还没有更新来跟上。

因此旧的 mvn 插件构建的代码与最新的运行时不兼容。

解决方法是将函数运行时固定到前一个函数运行时。转到应用程序设置面板,将 FUNCTIONS_EXTENSION_VERSIONbeta 更改为 2.0.11776-alpha

查看此issue discussion有关更多详细信息,新插件即将推出。

更新-6/15

新插件已发布。请参阅notice for jave language worker .

  • 使用最新的 Maven Azure Functions Archetype 创建新项目

    mvn archetype:generate -DarchetypeGroupId=com.microsoft.azure -DarchetypeArtifactId=azure-functions-archetype 
    
  • 更新现有项目以使用最新的 Azure Function mvn 插件

    1. 函数代码(*.java)

      之前

      import com.microsoft.azure.serverless.functions.annotation.*;
      import com.microsoft.azure.serverless.functions.*;
      

      之后(删除无服务器)

      import com.microsoft.azure.functions.annotation.*;
      import com.microsoft.azure.functions.*;
      
    2. pom.xml

      1)之前

      <dependency>
          <groupId>com.microsoft.azure</groupId>
          <artifactId>azure-functions-java-core</artifactId>
          <version>1.0.0-beta-2/3</version>
      </dependency>
      

      之后

      <dependency>
          <groupId>com.microsoft.azure.functions</groupId>
          <artifactId>azure-functions-java-library</artifactId>
          <version>1.0.0-beta-4</version>
      </dependency>
      

      2)在excludeArtifactIds中再找到一个azure-functions-java-core,改为azure-functions-java-library

      3)找到azure-functions-maven-plugin,将版本更改为1.0.0-beta-2。请参阅 maven 上的最新版本.

关于java - Azure Java函数-502-错误网关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50615746/

相关文章:

java - 使用 JDBC 连接 JAVA 和 MySql

java - java.io.File 的静态最终字段的命名不标准

Azure 订阅上的 Azure EventGrid - 确定哪个标签已更改

asp.net - 使用 Azure ACS 和 Asp.Net 3.5 的 Win2003 R2 上的 WIF 异常

azure - Windows Azure ServiceBus 中继澄清

java - 无法从我的 Android 应用程序 com.google.android.gms.auth.GoogleAuthException : Unknown 上传到谷歌驱动器

c# - 更新满足 datediff 约束的所有行的 int 列?

azure - 如何使我的 Azure 逻辑应用程序可移植

azure - 如何使用 Azure 应用程序配置将 Azure Function 配置为使用动态配置?

java - Java中的HashMap碰撞安全吗