web-dev-qa-db-fra.com

Comment déterminer la région actuelle au sein d'une fonction AWS Lambda?

Regions.getCurrentRegion() renvoie null à partir d'une fonction AWS Lambda. Il semble que Regions.getCurrentRegion() ne soit pas pris en charge à partir d'une fonction AWS Lambda. Existe-t-il un autre moyen de déterminer dans quelle région la fonction lambda s'exécute?

REMARQUE: la fonction AWS Lambda est écrite en Java.

27
Richard Crane

Vous pouvez lire le AWS_REGION variable d'environnement et utilisez le Regions.fromName fonction pour analyser cela dans une région utilisable.

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

L'avantage de cela sur l'approche d'analyse ARN est que vous n'avez pas besoin d'un objet Context ce qui signifie que vous pouvez l'utiliser en dehors de votre fonction de gestionnaire.

Source: documentation des variables d'environnement Lambda d'AWS .

38
sihil

Tous les conteneurs Lambda ont des variables d'environnement définies $AWS_REGION

De Java Code dans Lambda. Vous pouvez y accéder comme ci-dessous

System.getenv("AWS_REGION")
13
Gokul

L'objet context transmis à votre fonction Lambda a un attribut appelé invokedFunctionArn. L'ARN est au format:

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

Vous pouvez donc fractionner cette chaîne sur le caractère : Et trouver la région associée à la fonction Lambda.

Remarque: Dans Java vous appelez le getter getInvokedFunctionArn() de l'objet contextuel.

10
garnaat

1) Vous pouvez utiliser la variable d'environnement et y accéder en tant que

System.getenv("AWS_REGION")

Voici une liste des variables d'environnement qui font partie de l'environnement d'exécution AWS Lambda et sont mises à la disposition des fonctions Lambda. Le tableau ci-dessous indique ceux qui sont réservés par AWS Lambda et ne peuvent pas être modifiés, ainsi que ceux que vous pouvez définir lors de la création de votre fonction Lambda. Pour plus d'informations sur l'utilisation des variables d'environnement avec votre fonction Lambda

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

2) Vous pouvez lire la variable d'environnement AWS_DEFAULT_REGION

Regions.fromName(System.getenv("AWS_DEFAULT_REGION"))
1
vaquar khan