如何确定AWS Lambda函数中的当前区域?

问题描述 投票:26回答:4

Regions.getCurrentRegion()从AWS Lambda函数中返回null。似乎AWS Lambda函数不支持Regions.getCurrentRegion()。有没有另一种方法来确定lambda函数运行的区域?

注意:AWS Lambda函数是用Java编写的。

java amazon-web-services aws-lambda
4个回答
37
投票

您可以阅读AWS_REGION环境变量并使用Regions.fromName函数将其解析为可用区域。

Regions.fromName(System.getenv("AWS_REGION"))

这相对于ARN解析方法的优点是您不需要Context对象,这意味着您可以在处理函数之外使用它。

资料来源:AWS's Lambda environment variables docs


13
投票

所有Lambda容器都具有设置$AWS_REGION的环境变量

来自Lambda中的Java代码。您可以按如下方式访问它

System.getenv("AWS_REGION")

10
投票

传递给Lambda函数的context对象具有一个名为invokedFunctionArn的属性。 ARN的格式如下:

arn:aws:<service>:<region>:<account_id>:<resource>

因此,您可以在:字符上拆分此字符串,并找到与Lambda函数关联的区域。

注意:在java中,您将调用上下文对象的getInvokedFunctionArn() getter。


1
投票

1)您可以使用环境变量并将其作为

System.getenv("AWS_REGION")

以下是环境变量的列表,这些变量是AWS Lambda执行环境的一部分,可供Lambda函数使用。下表列出了AWS Lambda保留哪些不可更改的内容,以及创建Lambda函数时可以设置的内容。有关在Lambda函数中使用环境变量的更多信息

https://docs.aws.amazon.com/lambda/latest/dg/lambda-environment-variables.html

2)您可以阅读AWS_DEFAULT_REGION环境变量

Regions.fromName(System.getenv("AWS_DEFAULT_REGION"))
© www.soinside.com 2019 - 2024. All rights reserved.