AWSメモ > AWS LambdaからRDSに接続する

AWS LambdaからRDSに接続する

TODO: 画像を貼る

RDSインスタンス 及び DBの作成

AWS sdk のインストール

Lambda関数の作成

以下、ローカルでの作業

Lambda関数用のディレクトリを作成し、MySQLモジュールをインストール

mkdir rds-access1
cd rds-access1
npm install mysql

Lambda関数の作成

index.js

var AWS = require('aws-sdk');
//var dynamo = new AWS.DynamoDB.DocumentClient();
var mysql = require('mysql');

const createResponse = (callback, statusCode, body) => {
	var res = {
		"statusCode": statusCode,
		"headers": { "Test-Headr": "1234" },
		"body": JSON.stringify(body)
	}
	callback(null, res);
}

exports.handler = function(event,context,callback){
    var connection = mysql.createConnection({
      host     : 'xxxxxxx.rds.amazonaws.com',
      user     : 'example_user',
      password : 'example_pass',
      database : 'example_db'
    });
    connection.connect();
    connection.query('select * from books', function(err, rows, fields) {
      if (err) throw err;
      console.log(rows);
      console.log(fields);
      var list = JSON.stringify(rows);
      createResponse(callback, 200, { "list": list });
    });
    connection.end(function(err) {
      context.done();
    });
}

ロールの作成

マネージメントコンソールのIAM - ロール から以下のポリシーを持つロールを作成する。

・AmazonRDSFullAccess
・AWSLambdaFullAccess
・AmazonVPCFullAccess

作成したロールの「ロールARN」を確認しておく。

Lambda関数のアップロード

zip の作成

cd rds-access1
rm -rf rds-access1.zip
zip -r rds-access1.zip .

アップロード

aws lambda create-function \
  --function-name rds-access1 \
  --runtime nodejs6.10 \
  --role 上記で確認したロールARN \
  --handler index.handler \
  --zip-file fileb://rds-access1.zip

AWS API Gateway からアクセスできるようにする

API の作成

マネージメントコンソール - API Gatewayにアクセスし、以下の通り作成する。

API 名rds_access
リソース名rds-access
リソースパス/rds-access
メソッドGET
統合タイプLambda関数
Lambdaプロキシ統合の使用on
Lambda リージョンLambda関数を作成したリージョン
Lambda 関数作成したLambda関数名

◆注意
Lambdaプロキシ統合の使用を on にした場合、event から 様々な httpリクストの情報が得られるが、
レスポンスデータの形式もルールに従う必要がある。
参照 : http://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/api-gateway-set-up-simple-proxy.html#api-gateway-simple-proxy-for-lambda-output-format

デプロイ

作成したら、アクションの「API のデプロイ」からデプロイする。
※ステージ名は、ここではとりあえず dev とかにしておく。(このへんは運用次第)

URLの確認

デプロイしたら「ステージ」から対象の API を選択すると「URL の呼び出し」という箇所で APIのURLが確認できる。


トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-10-22 (日) 23:41:06 (413d)