私のコードがAWSラムダ環境で実行されているかどうかを検出したい。それを行うための良い、文書化された方法はありますか?AWSラムダ環境で動作しているかどうかを検出するにはどうすればいいですか?
現在、私は間違った感じのブログ投稿Exploring The AWS Lambda Runtime Environmentに記載されている環境変数LAMBDA_TASK_ROOTの存在に依存しています。
私のコードがAWSラムダ環境で実行されているかどうかを検出したい。それを行うための良い、文書化された方法はありますか?AWSラムダ環境で動作しているかどうかを検出するにはどうすればいいですか?
現在、私は間違った感じのブログ投稿Exploring The AWS Lambda Runtime Environmentに記載されている環境変数LAMBDA_TASK_ROOTの存在に依存しています。
これを処理する最善の方法は、自分で追跡することです。特に、ラムダエントリポイントの後にグローバル変数または環境変数を設定することができます。例えば、Node.jsの中で:
const isLambda = !!(process.env.LAMBDA_TASK_ROOT || false);
if (isLambda) {
// You're on AWS Lambda
} else {
// Local or elsewhere
}
クレジットをwatson/is-lambdaに発見するために:
exports.handler = function(event, context, callback) {
process.env['LAMBDA_ENV'] = 'true';
...
};
が記載されています。私はその解決策が好きです。ありがとう! – sumek
あなたがチェックすることができprocess.envプロパティがあります。
編集:(より多くのenv VARS付き)公式AWSソースhttps://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html
'const isHostedOnAWS = !!(process.env.LAMBDA_TASK_ROOT || process.env.AWS_EXECUTION_ENV);'はチャームのように機能し、サードパーティのプラグインに依存しません。素敵なトリック、ありがとう! – Vadorequest
あなたは、例えば照らし合わせ、優れたlambda-localパッケージと同様に、ラムダ環境偽物を使用している場合LAMBDA_TASK_ROOTは機能しません。代わりに、この
用途:
const isLambda = Boolean(process.env['AWS_LAMBDA_FUNCTION_NAME']);
これは実際にはおそらく多分かもしれません...? :P詐欺師は意図的にこれらの値をすべて設定するべきではないので、あなたが実際にラムダであるかどうかを検出できますか? :) – Farley
は、あなただけのコードが実行された場合知りたいですか?通知が必要ですか?すべての時間を知りたいのですか、それとも実行されたかどうかを確認したいのですか? –
あなたの現在の解決策は私がやることです。なぜそれは間違っているのですか? –
環境に合わせて設定を変更します。 環境変数が正式に文書化されておらず、アナウンスなしで変更される可能性があるため、 – sumek