Подтвердить что ты не робот

Как определить текущую область в функции AWS Lambda?

Regions.getCurrentRegion() возвращает значение null из функции AWS Lambda. Кажется, что Regions.getCurrentRegion() не поддерживается из функции AWS Lambda. Есть ли другой способ определить, в какой области работает лямбда-функция?

ПРИМЕЧАНИЕ. Функция AWS Lambda написана на Java.

4b9b3361

Ответ 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"))