Amazon RDS Proxy(MySQL)にTLSで接続する。

RDS ProxyでTLS接続を試した。 TLSを有効にすると、証明書を設定する必要がある。

Lambdaの場合は以下のようなコードになるかな。

const fs = require('fs');
const mysql('mysql2/promise');

exports.handler = async (event) => {
  let con;
  try {
    con = await mysql.createConnection({
      host: '...rds.amazonaws.com',
      user: 'admin',
      password: '....',
      database: 'db',
      ssl: {
        ca: fs.readFileSync('AmazonRootCA1.pem')
      }
    });

    return {
      statusCode: 200,
      body: 'OK'
    };
  } catch (err) {
    return {
      statusCode: 500,
      body: JSON.stringify({e});
    };
  } finally {
    if (con) con.end();
  }
};

ちなみにRDS Proxyの場合、caには上記のようにAmazonRootCA1.pemを設定すればよいが、RDSの場合には、caには、global-bundle.pemなどを設定する必要がある。

RDSとRDS Proxyの切り替えは設定にもよるけど、基本はhostのURLを変更するだけ済む。

参考