2016-04-05 18 views

答えて

8

ラムダ関数に渡されるオブジェクトには、invokedFunctionArnという属性があります。 ARNは、フォーマットは次のとおりです。

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

ですから、:文字の上にこの文字列を分割し、ラムダ関数に関連付けられている地域を見つけることができます。

注:javaでは、コンテキストオブジェクトのgetInvokedFunctionArn()ゲッターを呼び出します。

+0

以下のようLambda.YouでJavaコードから$ AWS_REGION

を設定した環境変数がそれにアクセスすることができます。ありがとうございました! –

+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 - 私はそれを反映するために私の答えを更新しましたより良い情報源としてnodejsのLambdaには – sihil

4

すべてのラムダのコンテナは、これは非常にうまく機能

System.getenv( "AWS_REGION")

+2

、それは "process.env.AWS_REGION"です。 –

関連する問題