3

いくつかの概念を理解するには、あなたの助けが必要です。CloudFront で Lambda@Edge を使用する Web アプリケーションがあります。このラムダ関数は DynamoDB にアクセスし、約 10 個の独立したクエリを作成します。これにより、時折エラーが発生しますが、ラムダ関数をスタンドアロンでテストすると完全に機能します。クラウドフロントのログからあまり意味を成すことができず、Lambda@Edge は CloudWatch に表示されません。

DynamoDB クエリが原因であると感じています。(これが Lambda 関数で行っていることのすべてであるため) 確認するために、すべてのリージョンでデータをレプリケートしました。しかし、それで問題は解決していません。ラムダ関数に割り当てられるタイムアウトとメモリを増やしました。しかし、それは何の助けにもなりませんでした。ただし、DB クエリの数を減らすと効果があるようです。

これを理解するのを手伝ってもらえますか?Lambda@Edge で DB クエリを作成するのは間違っていますか? Lambda@Edge の詳細なログを取得する方法はありますか?

4

2 に答える 2

1

1年以上遅すぎますが、誰かがそれの恩恵を受けることは決してありません. Lambda@Edge は特定のリージョンでは実行されないため、DynamoDB テーブルに接続する場合は、このテーブルが見つかるリージョンを定義する必要があります。

NodeJS では、これは次のようになります

// Load the AWS SDK for Node.js
var AWS = require('aws-sdk');
// Set the region 
AWS.config.update({region: 'REGION'});

// Create DynamoDB document client
var docClient = new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10'});

F_SO_K が述べたように、CloudWatch ログは最も近いリージョンで見つけることができます。どのリージョンになるかを調べる方法 (その特定の Lambda@Edge を使用しているのがあなただけの場合は、このドキュメントを参照してください)

于 2021-06-22T20:08:53.140 に答える