web-dev-qa-db-ja.com

AWS Lambda関数内の現在のリージョンをどのように判断できますか?

Regions.getCurrentRegion()は、AWS Lambda関数内からnullを返します。 Regions.getCurrentRegion()はAWS Lambda関数内からサポートされていないようです。ラムダ関数が実行されている領域を決定する代替方法はありますか?

注:AWS Lambda関数はJavaで記述されています。

27
Richard Crane

AWS_REGION環境変数を読み取り、Regions.fromName関数を使用して、それを使用可能な領域に解析できます。

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

ARN解析アプローチに対するこの利点は、Contextオブジェクトが必要ないことです。つまり、ハンドラー関数の外部で使用できるということです。

ソース: AWSのLambda環境変数ドキュメント

38
sihil

すべてのLambdaコンテナには、環境変数が設定されています$AWS_REGION

From Java Lambdaのコード。次のようにアクセスできます。

System.getenv("AWS_REGION")
13
Gokul

Lambda関数に渡されるcontextオブジェクトには、invokedFunctionArnという属性があります。 ARNの形式は次のとおりです。

_arn:aws:<service>:<region>:<account_id>:<resource>
_

したがって、この文字列を_:_文字で分割し、Lambda関数に関連付けられた領域を見つけることができます。

注:Java=では、コンテキストオブジェクトのgetInvokedFunctionArn() getterを呼び出します。

10
garnaat

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"))
1
vaquar khan