ラムダ関数からEC2PostgresDBに接続できません
S3 createAllイベントの後にラムダ関数を作成しました。このラムダ関数では、DBのデータを更新する必要があります。私が行ったことは、ローカルでDB接続をテストしたことです。それはうまくいきます。ただし、ラムダに公開した後、client.connect関数内のすべてのconsole.logがトリガーされるわけではありません。ラムダロールの許可になると思ったので、administratorfullacessをこのロールに与えました。また、EC2ルールでは、着信トラフィックをすべての人に公開しています。そして、すべての人にも発信します。1. EC2はubuntu、DBとしてのPostgres 2.Lambda関数のNodejs
const { Client } = require('pg');
exports.handler = async (event,context,callback) => {
context.callbackWaitsForEmptyEventLoop = true;
var client = new Client({
host:'example.com',
port:5432,
user:'postgres',
password:'examplepassword',
database:'db'
});
console.log('start connecting db : log client');
client.connect().then(() => {
console.log('DB is connected');
const text1 = 'SELECT * FROM unime.lecture_content';
const text = 'INSERT INTO uni.institute_type(name) VALUES($1)
RETURNING *';
const values = ['Test Data 2'];
callback('DB Connected')
}).catch(e => {console.error('connection error', e.stack)
callback('DB failure',e.stack)
})
};
私のPackage.json
{
"name": "node_postgres",
"version": "1.0.0",
"description": "node postgres api",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"deploy": " — zip-file fileb://Lambda-Deployment.zip",
"predeploy": "zip -r Lambda-Deployment.zip * -x *.zip *.log"
},
"keywords": [
"postgres"
],
"author": "JUNXILI",
"license": "ISC",
"dependencies": {
"pg": "^7.0.3"
}
}
client.connect関数内のすべてのログを表示したい。助けてくださいありがとう
ローカルマシンからは接続できるが、Lambda関数からは接続できないことがわかっているため、問題はEC2セキュリティグループである可能性があります。セキュリティグループは、IPとポートのホワイトリストを使用して、接続を許可するかどうかを決定します。EC2インスタンスが最初にセットアップされるとき、そのデフォルトのセキュリティグループは多くの場合HTTP / HTTPSのような単純なトラフィックのみを許可します。PostgreSQLのポート(5432)は開きません。さらに、Lambda関数バッキングインスタンスのIPは呼び出しごとに異なるため、これらの接続は任意のIPから許可する必要があります。
これが事実である場合、私の解決策は次のようになります。
より安全にするために、VPCの使用を検討することもできます。https://docs.aws.amazon.com/lambda/latest/dg/vpc.htmlを参照してください
VPCルートを使用する場合にも注意してください。
AWS Lambdaはこの情報を使用して、関数がプライベートVPC内の他のリソースに安全に接続できるようにするエラスティックネットワークインターフェース(ENI)をセットアップします。
ENIを使用すると、AWSがENIプロビジョニング時間の問題を解決するまで、Lambdaのコールドスタート時間が長くなる可能性があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加