Node.jsでLambdaからAuroraに接続する
はじめに
AWS独自のSQL互換データベースのAuroraですが、
Asia Pacific 1 (Tokyo)への展開は昨年10月ということもあり、
まだまだNode.jsからRDS Auroraに接続する情報について、
日本語情報があまり見つからない状況ですので、
現時点での手順を整理しておこうと思います。
VPCのセキュリティグループの設定
まず、大事な点はRDSは必ずVPCの中にあるということ(2016年2月時点)。
古い情報などでは、RDSをVPCの外側に置けていたようですが、
現時点ではRDSを起動する際にVPCの指定は必須となります。
以下、VPCの作業を備忘録として記録しておきますが、
あれこれ試行錯誤しながらやっていたので、手順として適切かは自身がありません。
まず、事前にVPCを作成しておく必要があります。
次にルートテーブルを作ります。
送信先「0.0.0.0/0」というセキュリティ的にアウトの設定を追加します。
ターゲットは今回対象となるVPCですね。
ここはきちんと制約かけないといけないと思いますが、
LambdaのグローバルIPが固定でないので、範囲をきちんと絞る必要がありそうです。
さらにサブネットを作成して、ルートテーブルと関連付けます。
そして、そのVPCをインターネットから接続できるように
インターネットゲートウェイも作成します。
最後にセキュリティグループにインバンドとして「MySQL/Aurora」を
全てのアクセス元からアクセス可能なように設定します。
これで、VPCの設定は完了です。
RDSのセットアップ
続いてはRDS側のセットアップです。
こちらで注意するのは1点だけ、「パブリックアクセス可能」に「はい」を選択するだけ。
そしたら、ローカルからSQL Clientでアクセスして、
適当なテーブルとデータを作っておきましょう。
ここらへんは特にクセはありませんでした。
Lambda関数の実行
これでっと、Lambdaの出番です。
AuroraはSQL互換なので、mysqlモジュールを同梱してあげればアクセス可能になります。
npmでmysqlモジュールを取得して、index.jsと同じフォルダに格納して
一緒にZIP化してアップロードすればOKです。
npm install mysql
コード自体もMySQLに接続するのと何ら変わりありません。
もちろん細かなチューニング等に違いはあると思いますが、
アプリケーションの視点から見ると、さほど差異は意識しないですみそうです。
以下のサンプルではitemテーブルから全件取得しています。
var mysql = require('mysql');
var conn = mysql.createConnection({
host : 'xxx.xxx.ap-northeast-1.rds.amazonaws.com',
user : 'your username',
password : 'your password',
port : '3306',
database : 'your database'
});
exports.handler = function(event, context){
console.log('Begin Process');
conn.connect();
console.log('Connected');
conn.query('select * from item;', function(err, rows, fields) {
conn.destroy();
context.done(null, rows);
});
};
結果はごらんの通り。
[
{
"sku": "1234567890123",
"store": "us",
"lang": "en",
"name": "T-Shirt",
"price": 10
}
]
RDSをVPCの外側から見れるようにするための手間が95%くらいを占めていました。
ローカルのSQLクライアントからRDSに接続できるようになってから
上記のコードを実行してみるまでの所要時間は10分もかかりませんでした。
思った以上にスムーズに導入できそうな感じです。
Author And Source
この問題について(Node.jsでLambdaからAuroraに接続する), 我々は、より多くの情報をここで見つけました https://qiita.com/yoshidasts/items/53918d2586d55bd0856a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .