AWS Aurora Serverless Postgres に接続するラムダ API を構築しています。
- AWS の指示に従って、Postgres と互換性のある Aurora Serverless をセットアップします (MySql 用ですが、Postgres にも有用です): https://aws.amazon.com/getting-started/tutorials/configure-connect-serverless-mysql-database-aurora/
セキュリティグループの受信にポート 5432 を追加しました
また、data-api-client を使用してデータベースにクエリを実行します ( https://github.com/jeremydaly/data-api-client )
サーバーレス フレームワークで API ラムダを構築、設定
timeout
は 1 分、役割を追加AmazonRDSDataFullAccess
私のラムダ コード (サーバーレス フレームワークに組み込まれている) は単純です。
async function query_db(_sql) {
const data = require('data-api-client')({
secretArn: constants.DBSecretsStoreArn,
resourceArn: constants.DBAuroraClusterArn,
database: constants.DatabaseName
});
try {
let result = await data.query(_sql);
return result.records;
} catch (error) {
console.log('Lambda :: query_db :: Error: ' + error);
return error;
}
}
async function run() {
let sql = 'SELECT * FROM products LIMIT 10';
let result = await query_db(sql);
console.log('result: '+ JSON.stringify(result));
return callback(null, {
headers: {
'Access-Control-Allow-Origin': '*'
},
statusCode: 200,
body: JSON.stringify({msg: 'done})
});
}
結果:
- ローカル(サーバーレスオフライン)で正常に実行されました
- 展開後、タイムアウトが発生し、502、エラーが返されました:「内部サーバー エラー」
どんな提案でも大歓迎です。