我有一个lambda函数(没有APIGateWay。我想在test和prod阶段使用相同的lambda函数,为此我想在运行时获取阶段名称。我的代码是用java编写的,我知道我们可以找到使用以下内容的默认AWS区域:
Regions regions = Regions.fromName(System.getenv("AWS_DEFAULT_REGION"));
所以这是我的问题:
1-如何获取运行lambda函数的阶段的名称?
2-这个默认区域是什么意思?它将始终与我的lambda函数运行的区域相同吗?
任何领导都非常感谢。
答案 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函数正在运行的区域?
SDK不引用它。它仅使用AWS_REGION
。请参阅SDKGlobalConfiguration.java。