Azure Java 函数 -502-Bad Gateway
我已经按照以下链接创建了 Java azure 函数:
现在当我尝试使用 curl 访问时
curl -w '
' https://sundaydemo-20180526141357482.azurewebsites.net -d AzureFunctions或邮递员https://sundaydemo-20180526141357482.azurewebsites.net/api/hello
然后出现以下错误,我想知道是否有人遇到同样的错误.
<块引用>502-坏网关
指定的 CGI 应用程序遇到错误,服务器终止了进程.
日志:
2018-05-31T02:02:50 欢迎您,您现在已连接到日志流服务.2018-05-31T02:03:50 在过去 1 分钟内没有新的跟踪.2018-05-31T02:04:50 在过去 2 分钟内没有新的跟踪.2018-05-31T02:05:50 在过去 3 分钟内没有新的踪迹.2018-05-31T02:06:50 在过去 4 分钟内没有新的痕迹.2018-05-31T02:07:50 在过去 5 分钟内没有新的痕迹.2018-05-31T02:08:50 在过去 6 分钟内没有新的痕迹.2018-05-31T02:09:17.161 [信息] 执行 'Functions.hello' (原因 ='此函数是通过主机 API 以编程方式调用的.',ID = b43d17c9-35c0-4c84-ab7e-26a8ec721fe9)2018-05-31T02:10:50 在过去 1 分钟内没有新的跟踪.2018-05-31T02:11:50 在过去 2 分钟内没有新的痕迹.2018-05-31T02:12:50 在过去 3 分钟内没有新的痕迹.2018-05-31T02:13:50 在过去 4 分钟内没有新的踪迹.2018-05-31T02:14:17.183 [错误] 函数Functions.hello"(ID:b43d17c9-35c0-4c84-ab7e-26a8ec721fe9")超过了 00:05:00 的超时值.发起取消.2018-05-31T02:14:17.451 [错误] Microsoft.Azure.WebJobs.Host:函数超过了 00:05:00 的超时值:Functions.hello.2018-05-31T02:14:17.572 [错误] 执行Functions.hello"(失败,Id=b43d17c9-35c0-4c84-ab7e-26a8ec721fe9)2018-05-31T02:15:50 在过去 1 分钟内没有新的跟踪.2018-05-31T02:16:50 在过去 2 分钟内没有新的踪迹.2018-05-31T02:17:50 在过去 3 分钟内没有新的痕迹.2018-05-31T02:18:50 在过去 4 分钟内没有新的踪迹.
还尝试删除所有并添加 CORS *
存储:
解决方案看来你遇到了 Function Runtime 2.0 Preview Breaking Change.
在门户上,函数运行时已更新为 2.0.11857.0
(检查您的函数应用设置面板).虽然 maven 插件还没有更新赶上来.
所以旧的 mvn 插件构建的代码与最新的运行时不兼容.
解决方法是将您的函数运行时固定到前一个.转到应用程序设置面板并将 FUNCTIONS_EXTENSION_VERSION
从 beta
更改为 2.0.11776-alpha
.
请参阅此问题讨论了解更多细节,新插件即将推出.
Update-6/15
新插件已发布.请参阅jave 语言工作者的通知.
使用最新的 Maven Azure Functions Archetype 创建新项目
mvn archetype:generate -DarchetypeGroupId=com.microsoft.azure -DarchetypeArtifactId=azure-functions-archetype
更新现有项目以使用最新的 Azure Function mvn 插件
函数代码(*.java)
之前
import com.microsoft.azure.serverless.functions.annotation.*;导入 com.microsoft.azure.serverless.functions.*;
之后(删除无服务器)
import com.microsoft.azure.functions.annotation.*;导入 com.microsoft.azure.functions.*;
pom.xml
1)之前
<依赖><groupId>com.microsoft.azure</groupId><artifactId>azure-functions-java-core</artifactId><版本>1.0.0-beta-2/3</版本></依赖>
之后
<依赖><groupId>com.microsoft.azure.functions</groupId><artifactId>azure-functions-java-library</artifactId><版本>1.0.0-beta-4</版本></依赖>
2)在
excludeArtifactIds
中再找到一个azure-functions-java-core
,改为azure-functions-java-library
.3)找到
azure-functions-maven-plugin
,将版本改为1.0.0-beta-2
.请参阅 上的最新版本maven.
I have created Java azure function as given on following link:
https://docs.microsoft.com/en-us/azure/azure-functions/functions-create-first-java-maven
Java Class:
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);
}
}
}
Function created and deployed successfully
Now when i try to access using curl
curl -w '
' https://sundaydemo-20180526141357482.azurewebsites.net -d AzureFunctions
or postman
https://sundaydemo-20180526141357482.azurewebsites.net/api/hello
Then get following error , I am wonder if anyone getting same error.
502-Bad Gateway
The specified CGI application encountered an error and the server terminated the process.
Logs :
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).
Also tried to remove all and added CORS *
Storage :
解决方案It seems you met Function Runtime 2.0 Preview Breaking Change.
On portal, function runtime has been updated to 2.0.11857.0
(Check your Function app settings panel). While maven plugin has not been updated to catch up.
So the code built by old mvn plugin is not compatible with latest runtime.
Workaround is to pin your function runtime to previous one. Go to Application settings panel and change FUNCTIONS_EXTENSION_VERSION
from beta
to 2.0.11776-alpha
.
See this issue discussion for more details, new plugin is coming soon.
Update-6/15
New plugin has been released. See notice for jave language worker.
Create new project using latest Maven Azure Functions Archetype
mvn archetype:generate -DarchetypeGroupId=com.microsoft.azure -DarchetypeArtifactId=azure-functions-archetype
Update existing project to use latest Azure Function mvn plugin
function code(*.java)
Before
import com.microsoft.azure.serverless.functions.annotation.*; import com.microsoft.azure.serverless.functions.*;
After(remove serverless)
import com.microsoft.azure.functions.annotation.*; import com.microsoft.azure.functions.*;
pom.xml
1)Before
<dependency> <groupId>com.microsoft.azure</groupId> <artifactId>azure-functions-java-core</artifactId> <version>1.0.0-beta-2/3</version> </dependency>
After
<dependency> <groupId>com.microsoft.azure.functions</groupId> <artifactId>azure-functions-java-library</artifactId> <version>1.0.0-beta-4</version> </dependency>
2)Find one more
azure-functions-java-core
ofexcludeArtifactIds
, change toazure-functions-java-library
.3)Find
azure-functions-maven-plugin
,change version to1.0.0-beta-2
. See Latest version on maven.
相关文章