Regions.getCurrentRegion()
は、AWS Lambda関数内からnullを返します。 Regions.getCurrentRegion()
はAWS Lambda関数内からサポートされていないようです。ラムダ関数が実行されている領域を決定する代替方法はありますか?
注:AWS Lambda関数はJavaで記述されています。
AWS_REGION
環境変数を読み取り、Regions.fromName
関数を使用して、それを使用可能な領域に解析できます。
Regions.fromName(System.getenv("AWS_REGION"))
ARN解析アプローチに対するこの利点は、Contextオブジェクトが必要ないことです。つまり、ハンドラー関数の外部で使用できるということです。
ソース: AWSのLambda環境変数ドキュメント 。
すべてのLambdaコンテナには、環境変数が設定されています$AWS_REGION
From Java Lambdaのコード。次のようにアクセスできます。
System.getenv("AWS_REGION")
Lambda関数に渡されるcontext
オブジェクトには、invokedFunctionArn
という属性があります。 ARNの形式は次のとおりです。
_arn:aws:<service>:<region>:<account_id>:<resource>
_
したがって、この文字列を_:
_文字で分割し、Lambda関数に関連付けられた領域を見つけることができます。
注:Java=では、コンテキストオブジェクトのgetInvokedFunctionArn()
getterを呼び出します。
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"))