前提・実現したいこと
API GatewayにアクセスをLambdaにデプロイしたExpressにてDocumentDB接続してCRUD操作を行いたいのですができなくて困っております。
AWS環境
- API Gateway
- Lambda
- DocumentDB
API Gateway → Lambda → DocumentDBで
Deploy
Serverless Framework
(Lambda + API Gatewayのデプロイ)
参考サイト
下記、Node.jsを参考にしています。
https://docs.aws.amazon.com/documentdb/latest/developerguide/connect_programmatically.html
該当のソースコード
handler.js
const serverless = require('serverless-http'); const express = require('express'); const app = express(); const MongoClient = require('mongodb').MongoClient, f = require('util').format, fs = require('fs'); app.get('/users/', function (req, res) { var ca = [fs.readFileSync("./rds-combined-ca-bundle.pem")]; var client = MongoClient.connect( 'mongodb://XXXXXX:YYYYY@xxxxxx.zzzzzz.ap-northeast-1.docdb.amazonaws.com:27017', { useNewUrlParser: true, sslValidate: true, sslCA: ca }, function(err, client) { if(err) throw err; // Specify the database to be used db = client.db('dbname'); // Specify the collection to be used col = db.collection('users'); //Insert a single document col.insertOne({'hello':'Amazon DocumentDB'}, function(err, result){ //Find the document that was previously written col.findOne({'hello':'Amazon DocumentDB'}, function(err, result){ //Print the result to the screen console.log(result); //Close the connection client.close(); }); }); }); res.send(client); }); module.exports.main = serverless(app);
- mongodb://XXXXXX:YYYYY@〜はDocumentDBに記載のものを入れております。
package.json
{ "name": "app-api", "version": "1.0.0", "description": "", "main": "handler.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "assert": "^2.0.0", "express": "^4.17.1", "mongodb": "^3.6.4", "mongoose": "^5.11.15", "serverless-http": "^2.7.0", "utils": "^0.3.1" }, "devDependencies": { "eslint": "^7.19.0" } }
表示結果
res.send(client);では何も入って来なく、実際のdocumentDBのMongoDBに接続してもデータは入っていない状況です。
大変申し訳ございませんが、ご教示いただけますでしょうか。
回答1件
あなたの回答
tips
プレビュー