質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

解決済

1回答

1448閲覧

AWS LambdaでのDBへの接続について

k.t.est

総合スコア49

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2019/07/11 03:39

VPC内にLambdaを置いて、VPC内にあるRDSに接続するLambda関数を実行しているのですが、
下記のようなプログラムの場合、都度DBへ接続/切断を行うプログラムの方がいいのか、
プログラムの最初にDBへ接続を行い、最後にDBとの接続を切るプログラムの方がいいのか、ご教示頂けますでしょうか?

(下記は最初にDBへ接続を行って、最後にDBとの接続を切るという形になっております。)

nodejs

1const AWS = require('aws-sdk'); 2const mysql = require('mysql2'); 3 4const pool = mysql.createPool({ 5 host : 'xxxx', 6 user : 'xxxx', 7 password : 'xxxx', 8 database: 'xxxx', 9 port: 'xxx', 10}); 11 12// 接続 13pool.query = util.promisify(pool.query); 14 15exports.lambdaHandler = async (event, context) => { 16 const check_res = await check(); 17 const check_a_res = await check_a(); 18 const check_b_res = await check_b(); 19 const check_c_res = await check_c(); 20 21 //切断 22 pool.end(); 23 return check_c_res; 24}; 25 26function check(){ 27 const data = ["a", "b"]; 28 29 try { 30 const results = await pool.query('select id from table where id = ? and name = ?' ,data); 31 return results; 32 }catch(e){ 33 console.log("check error"); 34 pool.end(); 35 throw e; 36 } 37} 38 39//function check_a()/check_b()/check_c()もDB接続し、それぞれinsert/update/deleteを含む関数となっております。

#環境
AWS Lambda関数
node.js 8.10

#関連質問(未解決)
https://teratail.com/questions/199473

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

結論はプログラムの最初にDBへ接続を行い、最後にDBとの接続を切るプログラムになります。

データベースへの接続/切断を頻繁に行うと、CPUへの負荷が高くなったり、メモリも無駄に使用されたりの可能性があるためです。
データベース接続と切断は、コストが高いと認識しています。

投稿2019/07/24 16:56

hirontan

総合スコア195

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問