【问题标题】:corresponding Cloud functions in GCP for AWS lambdaGCP for AWS lambda 中对应的云函数
【发布时间】:2021-07-14 10:15:34
【问题描述】:

我们被分配将一些 Lambda 从 aws 迁移到 GCP。我在以下场景中遇到了困难。

in aws 
public class Handler implements RequestHandler<GetVaccinationPlanRequest, VaccinationPlanResponse>{

public vaccinationPlanResponse handleRequest(GetVaccinationPlanRequest req, Context cf){
}
}

我的问题是如何修改 GCP 中的代码?如果我想使用 HttpFunction 而不是 RequestHandler 我不应该这样做,因为它不会接受参数。 HttpFunction 也有一个服务方法,但它会再次返回 void,但是我需要返回疫苗接种计划响应...... 我如何在 GCP 中编写以下代码???

public class Handler implements RequestHandler<GetVaccinationPlanRequest, VaccinationPlanResponse>

【问题讨论】:

  • 不确定?您想在 GCP 上创建 Java Cloud Functions 并仅稍微更新您的 AWS Lamda 签名,对吗?
  • 是的,我想写gcp Cloud函数,需要把上面的代码从aws迁移到GCP。我正在尝试确定如何处理 RequetHandler 并覆盖其方法??

标签: amazon-web-services google-cloud-platform aws-lambda google-cloud-functions


【解决方案1】:

我不太确定是否理解这个问题,但这里有一些文档可能对您的问题有所帮助。

Handling HTTP methods in Google Cloud

import com.google.cloud.functions.HttpFunction;
import com.google.cloud.functions.HttpRequest;
import com.google.cloud.functions.HttpResponse;
import java.io.BufferedWriter;
import java.io.IOException;
import java.net.HttpURLConnection;

public class HttpMethod implements HttpFunction {
  @Override
  public void service(HttpRequest request, HttpResponse response)
      throws IOException {

    BufferedWriter writer = response.getWriter();

    switch (request.getMethod()) {
      case "GET":
        response.setStatusCode(HttpURLConnection.HTTP_OK);
        writer.write("Hello world!");
        break;
      case "PUT":
        response.setStatusCode(HttpURLConnection.HTTP_FORBIDDEN);
        writer.write("Forbidden!");
        break;
      default:
        response.setStatusCode(HttpURLConnection.HTTP_BAD_METHOD);
        writer.write("Something blew up!");
        break;
    }
  }
}

这是 Java 示例,在上面的链接中,您将找到许多其他使用 php、ruby、c# 等的示例,以及用于解析 http 请求、终止它的代码示例,以及有关 GCP 中 http 使用的更多信息.

在 Google Cloud HTTP 方法中,according to the official documentation 您的函数接收两个参数:HttpRequest 和 HttpResponse。在 HttpRequest 对象中,您可以包含您需要的所有数据。 HttpResponse 对象是触发函数时您的客户端将获得的实际响应。您可以修改第二个对象以满足您的需要。

【讨论】:

  • 感谢您的回复。如果我使用 Http 函数,上述方法的问题我无法传递像 Requesthandler 这样的参数。您还可以看到方法是handleRequest,我们可以在其中返回一个值。但是对于 GCP 中的服务方法,我们不能返回任何东西。那是我的问题。
  • 看看这篇文章,它可能对你有帮助:github.com/GoogleCloudPlatform/webapp2/blob/master/docs/guide/…
  • @aritchakraborty 更新了答案,提供了有关 GCP 向您的函数发送的参数的更多详细信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-12
  • 2021-06-05
  • 1970-01-01
  • 2020-04-24
  • 2021-09-12
  • 1970-01-01
相关资源
最近更新 更多