Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9042

【AWS】Lambdaのスロットリング時の挙動確認

$
0
0
やりたいこと S3のファイルPUTをトリガーとしたLambdaでスロットリングエラーが発生した時の挙動の確認 (スロットリングエラーが発生したときのトリガーイベントが消失するのか…) Summary Lambdaのスロットリングが発生してもS3 イベントは消失せず、一定間隔でリトライされる。(リトライ間隔は徐々に伸び、最大5分) リトライされる期間はイベントの最大有効時間の設定で調整(公式開発者ガイドに記載) 前提 検証手順 Lambdaソースコードの修正 Lambda同時実行数、タイムアウト期間の設定 動作確認 1. Lambdaソースコードの修正 Lambda内に70秒の待機を追加し、スロットリングが発生しやすくする。 index.js 'use strict'; const aws = require('aws-sdk'); const s3 = new aws.S3(); exports.handler = async (event) => { //S3から送られたトリガー内容を確認_ console.log(event); const bucket = event['Records'][0]['s3']['bucket']['name']; const key = event['Records'][0]['s3']['object']['key']; console.log(bucket); console.log(key); //S3.copyObjectを実施(params内Bucket,CopySource, Keyは必須) const params = { Bucket: "copied-bucket-210731", CopySource: bucket+'/'+key, Key: key }; //70秒待機 const sleep = () => new Promise(resolve => { setTimeout(() => { resolve(); }, 70000); }); await sleep(); const result = await s3.copyObject(params).promise(); console.log(result); }; 2. Lambda同時実行数、タイムアウト期間の設定 同時実行数: Lambdaの設定>同時実行で同時実行の予約=1に設定 タイムアウト期間: Lambdaの設定>基本設定でタイムアウト=5分に設定 3. 動作確認 ファイルを10個用意し、S3バケットに同時にアップロードする。 Copiedバケットにすべてのファイルがコピーされていることを確認 概ねリトライ間隔に比例して、コピーされている Cloudwatch Metrixよりスロットリングが発生することを確認 投入時に高頻度でスロットリングが発生、リトライ時に処理されることで徐々にスロットリングの値が低下 参考 (クラメソさんの記事はやってる最中に見つけて、ほぼやりたいことやってくれてました…ありがとうございます!)

Viewing all articles
Browse latest Browse all 9042