AWS LambdaからRDSにアクセスする設定




Lambda関数の設定方法

Lambda関数を設定する時に一番大事なのはRDSがあるVPCにLambda関数を作成することです。

VPCを設定したらサブネットとセキュリティグループも設定してください。

Lambdaの書き方

mysqlモジュールを使用してRDSに接続するサンプルです。ものすごく簡単に接続できます。

importしているconfigはnode-configという設定ファイルを読み込むモジュールです。Lambdaは環境変数が設定できるので環境ごとに読む設定ファイルが変わるようにしてRDSの接続先を変更すると便利です。

自分がしてしまったミスとしてRDSへのコネクションを接続したままだとcallback関数を呼んで関数の処理が完了してもタイムアウトになるまでLambdaが終了しません。そうなるとLambdaの実行時間がタイムアウトにかかった時間とイコールになるので無駄にお金がかかってしまいます。

なのでRDSを使う場合は処理の最後でコネクションを破棄するのを忘れないようにしてください。

import config from 'config';
import mysql from 'mysql';

const mysqlConfig = config.get('database.mysql');


exports.handler = (event, context, callback) => {
    // RDS
    let conn = mysql.createConnection({
        host     : mysqlConfig.host,
        port     : mysqlConfig.port,
        database : mysqlConfig.database,
        user     : mysqlConfig.user,
        password : mysqlConfig.password
    });
    conn.connect();
    conn.query('SELECT id, name FROM sample_table', (error, rows, fields) => {
        if (error) {
            callback(error);
            return;
        }
        callback();
    });

    // コネクション破棄
    conn.end();
};

関連記事

VPC内からS3にアクセスする方法を下記にまとめました。VPCエンドポイントとかNATゲートウェイの知識が必要ですがとりあえず設定方法について書いたのであわせて読んでみてください。

VPC内のLambdaからS3にアクセスする方法

おすすめ書籍

AWSをこれから使う初心者の方から現在使っている中級者の方までおすすめできる書籍です。内容はVPC、セキュリティグループ、IAMなどの基本的なことからWEBサービスを作るのに欠かせない、EC2、RDS、Route53などの扱い方が丁寧に説明されています。

中級者向けにはWEBサーバのオートスケール、Cloud Watchを使ったモニタリング方法、セキュリティ等について解説されています。手元において困ったときに読むのにちょうどいい一冊になると思います。

 

The following two tabs change content below.

髙妻智一

2013年CyberAgent新卒入社 スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。 2018年仮想通貨のスマホウォレットを提供するGinco Incにブロックチェーンエンジニアとして入社。






よく読まれている関連記事はこちら



コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です