如何在AWS Lambda函数中获取舞台的名称?

时间:2018-03-26 16:52:45

标签: amazon-web-services aws-lambda aws-api-gateway

我有一个lambda函数(没有APIGateWay。我想在test和prod阶段使用相同的lambda函数,为此我想在运行时获取阶段名称。我的代码是用java编写的,我知道我们可以找到使用以下内容的默认AWS区域:

Regions regions = Regions.fromName(System.getenv("AWS_DEFAULT_REGION"));

所以这是我的问题:

1-如何获取运行lambda函数的阶段的名称?

2-这个默认区域是什么意思?它将始终与我的lambda函数运行的区域相同吗?

任何领导都非常感谢。

1 个答案:

答案 0 :(得分:2)

  

如何获取lambda函数所在阶段的名称   运行

对于Lambda Proxy集成,您可以从输入流中的requestContext获取阶段名称,其中包含由API Gateway序列化为JSON字符串的API请求。输入数据还可以包括请求的阶段变量stageVariables(如果您使用/需要任何变量)。例如:

JSONParser parser = new JSONParser();

public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) throws IOException {
  ...
  BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
  String stage = null;

  JSONObject event = (JSONObject)parser.parse(reader);
  if (event.get("requestContext") != null) {
    JSONObject requestContext = (JSONObject)parser.parse((String)event.get("requestContext"));
    if (requestContext.get("stage") != null) {
      stage = (String)requestContext.get("stage");
    }
  }
  ...
}

请参阅full example

  

此默认区域的含义是什么?它会永远和它一样吗?   我的lambda函数正在运行的区域?

根据docs根据SDK

SDK不引用它。它仅使用AWS_REGION。请参阅SDKGlobalConfiguration.java