mk-toolブログ

エンジニアと家のことをごちゃごちゃと書いてます

lambdaからRDSに書き込みをする

VPCに入れる

lambdaをRDSにリーチできるように、VPC内に入れることで、RDSに対して直接データを書き込めるようになる。

lambdaの「ネットワーク」の設定から設定することができる。

以下のサイトにエンドポイントの作成について参考になると思う。

VPC Endpointを使ってS3にアクセスしてみる – サーバーワークスエンジニアブログ

S3などへのアクセスはエンドポイントを作成

この際、注意が必要なのが、lambdaからS3へのアクセスなどが遮断されてしまうため、VPCエンドポイントを作成して、S3にアクセスできるようにしなければならない。

外部モジュールを入れる際はlayerを追加

lambdaで外部モジュールやパッケージを利用する際は、layerにzip化したパッケージ群をアップロードする必要がある。

「layer aws nodejs」で検索すると方法が出てくると思う。

RDSへの書き込みは通常通りに

nodejsからmysqlにデータを書き込むことを想定する。

var mysql = require('mysql');
var connection = mysql.createConnection({
    host: "<rds_endpoint>",
    user: "<rds_username>",
    password: "<password>",
    database: "<db_name>",
});
// console.log(connection);
exports.handler = (event, context, callback) => {
    connection.query('show tables', function (error, results, fields) {
        if (error) {
            connection.destroy();
            throw error;
        } else {
            // connected!
            console.log(results);
            callback(error, results);
            connection.end(function (err) { callback(err, results);});
        }
    });
};

参考

Querying RDS MySQL DB With NodeJS Lambda Function