Как определить текущую область в функции AWS Lambda?
Regions.getCurrentRegion()
возвращает значение null из функции AWS Lambda. Кажется, что Regions.getCurrentRegion()
не поддерживается из функции AWS Lambda. Есть ли другой способ определить, в какой области работает лямбда-функция?
ПРИМЕЧАНИЕ. Функция AWS Lambda написана на Java.
Ответы
Ответ 1
Вы можете прочитать AWS_REGION
среды AWS_REGION
и использовать функцию Regions.fromName
чтобы проанализировать ее в пригодной для использования области.
Regions.fromName(System.getenv("AWS_REGION"))
Преимущество этого подхода перед анализом ARN заключается в том, что вам не нужен объект Context, что означает, что вы можете использовать его вне своей функции-обработчика.
Источник: документация по переменным среды AWS Lambda.
Ответ 2
Все контейнеры Lambda имеют переменные окружения, установленные $AWS_REGION
Из Java-кода в Lambda. Вы можете получить к нему доступ, как показано ниже
System.getenv("AWS_REGION")
Ответ 3
Объект context
который передается в вашу функцию Lambda, имеет атрибут invokedFunctionArn
. ARN имеет формат:
arn:aws:<service>:<region>:<account_id>:<resource>
Таким образом, вы можете разбить эту строку на символ :
и найти область, связанную с функцией Lambda.
Примечание. В Java вы должны вызывать метод getInvokedFunctionArn()
объекта контекста.
Ответ 4
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"))