Regions.getCurrentRegion()
は、AWSラムダ関数内からnullを返します。 Regions.getCurrentRegion()
は、AWSラムダ関数内ではサポートされていないようです。ラムダ関数がどの領域を実行しているかを判断する別の方法はありますか?AWSラムダ関数内の現在の領域をどのように決定できますか?
注:AWSラムダ関数はJavaで記述されています。
Regions.getCurrentRegion()
は、AWSラムダ関数内からnullを返します。 Regions.getCurrentRegion()
は、AWSラムダ関数内ではサポートされていないようです。ラムダ関数がどの領域を実行しているかを判断する別の方法はありますか?AWSラムダ関数内の現在の領域をどのように決定できますか?
注:AWSラムダ関数はJavaで記述されています。
ラムダ関数に渡されるオブジェクトには、invokedFunctionArn
という属性があります。 ARNは、フォーマットは次のとおりです。
arn:aws:<service>:<region>:<account_id>:<resource>
ですから、:
文字の上にこの文字列を分割し、ラムダ関数に関連付けられている地域を見つけることができます。
注:javaでは、コンテキストオブジェクトのgetInvokedFunctionArn()
ゲッターを呼び出します。
環境変数AWS_DEFAULT_REGION
を読み取って、Regions.fromName
関数を使用して、それを解析して使用可能な領域にすることができます。
Regions.fromName(System.getenv("AWS_DEFAULT_REGION"))
ARN解析アプローチを超えるこの利点は、あなたがあなたのハンドラ関数の外にそれを使用することができることを意味Contextオブジェクトを必要としないことです。
すべてのラムダのコンテナは、これは非常にうまく機能
System.getenv( "AWS_REGION")
、それは "process.env.AWS_REGION"です。 –
以下のようLambda.YouでJavaコードから$ AWS_REGION
を設定した環境変数がそれにアクセスすることができます。ありがとうございました! –
'AWS_DEFAULT_REGION'環境変数も利用できます。これはハンドラの外部で利用でき、解析する必要はありません。コードについては私の答えを見てください。 – sihil
この環境変数は、すべての実行時環境に存在しないことに注意してください。あなたが示すように、それはJavaのために働きます。 – garnaat