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

Ric*_*ane 30 java amazon-web-services aws-lambda

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

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

sih*_*hil 40

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

Regions.fromName(System.getenv("AWS_REGION"))
Run Code Online (Sandbox Code Playgroud)

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

来源:AWS的Lambda环境变量docs.


Gok*_*kul 14

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

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

System.getenv( "AWS_REGION")

  • 对于nodejs上的Lambda,它是"process.env.AWS_REGION" (7认同)

gar*_*aat 11

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

:

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

注意:在java中,您将调用context上下文对象的getter.


Tha*_*ghe 8

如果有人想在 Node JS 中获取该区域。这将是工作

process.env.AWS_REGION
Run Code Online (Sandbox Code Playgroud)


Jam*_*iro 6

对于希望在 Python 中执行此操作的任何人:

import os
import json

def lambda_handler(event, context):
    my_region = os.environ['AWS_REGION']
    print(my_region)
    return {
        'statusCode': 200,
        'body': json.dumps(f'Hello from {my_region}!')
    }
Run Code Online (Sandbox Code Playgroud)


vaq*_*han 5

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

System.getenv("AWS_REGION")
Run Code Online (Sandbox Code Playgroud)

以下是作为 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"))
Run Code Online (Sandbox Code Playgroud)