🦁
AWS Lambda で高速に連続で console.info すると全てが CloudWatch に記録されない
AWS Lambda(node.js) で、次のようなコードを実行する。
const arr = repeat(1000, _ => new Date().getTime());
console.info(`開始(${arr.length}件)`);
for (const x of arr) {
console.info(x);
}
console.info(`終了`);
これは 1000+2行=1002行のログを出力することを期待するコードだが、CloudWatch Logs には、432行しか記録されていなかった。
それも、開始 と 終了は記録されているが、中盤のログがなかった。
開始から終了までは約200msかかっており、時系列はほぼ連続しているが、記録されていない区間は時刻が飛んでいた。
実際には上記のコードではなく業務用のコードで発生しているが、実際にそれが発生した箇所は上記のような極めて単純な配列を console.info しているだけだ。
高速に console.log などすると、スロットリングでもされてしまうのだろうか???
Discussion
やっぱりスロットリングがあるみたい。
Resolve throttling errors in CloudWatch logs | AWS re:Post