問題タブ [aws-lambda-edge]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
amazon-web-services - リダイレクト時に Cloudfront が 403 をスローする
リダイレクトを処理する Origin Request イベントに接続された Lambda Edge があります。コードは非常にシンプルで、リクエストされた URL が DynamoDB テーブルにあるかどうかをチェックし、そうであればリダイレクト URL とともに 301 レスポンスを返します。これは私が持っているLambda Edgeコードです
テスト イベントを使用して Lambda 関数をテストすると、リダイレクト レスポンスが返されます。ただし、CloudFront を使用してリダイレクトを取得しようとすると、403 エラーが発生します。したがって、URL/a
が にリダイレクトされるとします/b
。呼び出すcloudfront.url/a
と、オブジェクトが移動されたことを示すメッセージが表示されます/b
(または、自動的にリダイレクトされたほうがよいでしょう)。代わりに、403 エラーが発生します。Lambda に何か問題がありますか? または、リダイレクトを機能させるために CloudFront にいくつかのアクセス許可をアタッチする必要がありますか?
serverless-framework - lambda@edge でシャープを使用する
いくつかの AWS lambda@edge でシャープを使用しようとしています。アイデアは、要求されたときに画像のサイズを変更してキャッシュすることです(これを参照)。
また、ラムダをデプロイするために serverless -webpackでサーバーレスを使用しています。
ラムダをデプロイでき、AWS コンソールでテストするとすべてうまくいきます。
ただし、これらは lamda@edge であり、cloudwatch リクエスト/レスポンス トリガーとして使用されます。したがって、ラムダの最大サイズは 1Mb です。
私の問題は、そのサイズに近づくことさえできないように見えることです.達成できる最高のものは11.6Mbでした. そして、その最初のリンクに見られるように、それは可能であるようです.
これは、34.7Mb ラムダになるサーバーレス構成です。
そして、これで11.6Mbになりました:
package.exclude も試してみましたが、うまくいきませんでした:
これは私のwebpack構成です:
ローカルで実行すると、パッケージ化されていることがわかります... node_modules フォルダーにはシャープとその依存関係があるようです。でも最大のフォルダーはシャープです。
必要のないものをシャープ フォルダー内にパッケージ化していると思われますが、何を理解できないようです。
何か助けはありますか?
ありがとう
更新: より注意深く読むと、シャープな (起点応答) サイズ制限が必要な関数は 5Mb のようです。その機能のためだけにシャープをパッケージ化する方法を見つける必要があります。他の機能(ビューアーリクエスト)では必要ありませんが、Webpackは両方に配置しているようです。これについて何か助けはありますか?
amazon-web-services - Lambda@Edge での DynamoDB アクセス
いくつかの概念を理解するには、あなたの助けが必要です。CloudFront で Lambda@Edge を使用する Web アプリケーションがあります。このラムダ関数は DynamoDB にアクセスし、約 10 個の独立したクエリを作成します。これにより、時折エラーが発生しますが、ラムダ関数をスタンドアロンでテストすると完全に機能します。クラウドフロントのログからあまり意味を成すことができず、Lambda@Edge は CloudWatch に表示されません。
DynamoDB クエリが原因であると感じています。(これが Lambda 関数で行っていることのすべてであるため) 確認するために、すべてのリージョンでデータをレプリケートしました。しかし、それで問題は解決していません。ラムダ関数に割り当てられるタイムアウトとメモリを増やしました。しかし、それは何の助けにもなりませんでした。ただし、DB クエリの数を減らすと効果があるようです。
これを理解するのを手伝ってもらえますか?Lambda@Edge で DB クエリを作成するのは間違っていますか? Lambda@Edge の詳細なログを取得する方法はありますか?