2016-04-05 80 views

回答

8

傳遞給您的Lambda函數的context對象具有一個名爲invokedFunctionArn的屬性。該ARN的格式爲:

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

所以,你可能分裂的:字符此字符串並找到拉姆達功能相關的區域。

注意:在java中,您會調用getInvokedFunctionArn()上下文對象的getter。

+0

這工作得很好。謝謝! –

+1

'AWS_DEFAULT_REGION'環境變量也可用。這可以在處理程序外部使用,並且不需要解析它。查看我的代碼答案。 – sihil

+1

請注意,此環境變量不存在於所有運行時環境中。正如你所展示的那樣,它對Java有用。 – garnaat

20

您可以閱讀AWS_DEFAULT_REGION環境變量,並使用Regions.fromName函數將其解析爲可用區域。

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

的這種過度的ARN分析方法的優點是,你並不需要一個Context對象,這意味着你可以使用它你的處理函數之外。

來源:AWS's Lambda environment variables docs

+1

這是記錄在https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html#lambda-environment-variables – pba

+0

謝謝@pba - 我已更新我的答案以反映作爲一個更好的來源。 – sihil

4

所有拉姆達容器具有環境變量設置Lambda.You $ AWS_REGION

從Java代碼可以訪問它,如下

System.getenv( 「AWS_REGION」)

+2

對於nodejs上的lambda,它是「process.env.AWS_REGION」 –