現在AWSでWebAPIの開発を行っています。
やろうとしていることは
RDSで立てたMySQLのサーバーの情報をjson形式でAPIから取得できるようにすることです。
LambdaとAPIGatewayを利用してやってみようとしたのですが、
Lambdaにzipをアップして、テストを実行しても思ったように処理が終わりません。
色々試しましたが問題点、解決策がわかりませんでした。
長文になるとは思いますがお付き合いお願いします。
まず、データベースについて記載します。
RDS:MySQL
データベース名:testDB
テーブル情報:testTable (id int, value varchar(10))
testTableの中身:
( 1, testValue1 )
( 2, testValue2 )
( 3, testValue3 )
testTableにある情報を全て取得して
それをjsonにして返すことを目的としてやっています。
DBからの情報の取得と、取得した情報のjsonへの変換はjavascriptとnodeで行いました。
「Runtime」には「Node.js4.3」を選択。
「Code entry type」は「Upload a .ZIP file」を選択。
VPCはDBを立てているVPCを選択。
セキュリティグループもDBと同じものを選択しています。
.zipは以下のようにしてあります。
uploadzip.zip ┗index.js ┗node_modules ┗mysql
index.js
var mysql = require('mysql'); 'use strict'; exports.handler = (event, context) => { var connection = mysql.createConnection({ host : 'RDSからエンドポイントを指定', user : 'MySQLのユーザ名', password : 'MySQLのパスワード', database : 'testDB' }); connection.connect(function(err) { if (err) { console.error('error connecting: ' + err.stack); return; } console.log('connected as id ' + connection.threadId); }); connection.query('show tables', function(err) { if (err) { console.error('error connecting: ' + err.stack); return; } console.log('connected as id ' + connection.threadId); }); connection.query('select * from testTable', function(err, rows, fields) { if (err) { console.log("--err"); console.log(err); throw err; } console.log(rows); console.log(fields); }); connection.end(function(err) { context.done(); }); };
Lambdaでの設定を載せます。
- Code
Code entry type : Upload a .ZIP file
- Configuration
Runtime : Node.js 4.3
Handler : index.handler
Role : Chose an existing role
Existing role : lambda_basic_vpc_execution
VPC : VPCを設定(VPCは全体で1つしか作っていません)
Subnets : ap-northeast-1a,-northeast-1c
Security Groups : DBのセキュリティグループと同じものを設定
これで、Lambdaのテストを実行すると
{ "errorMessage": "2016-07-19T00:07:13.619Z oooooooo-oooo-oooo-oooo-oooooooooooo Task timed out after 3.00 seconds" }
と赤文字で返って来ます。
jsoneは普通に実行する分には取得したいものが取得できていました。
分かりにくいかもしれませんが困っています。
解決策、問題点を教えて下さい。
よろしくお願いします。
長文になりましたが読んでくださりありがとうございました。
回答1件
あなたの回答
tips
プレビュー