ラムダNodejsからEC2PostgresDBに接続できません

ジョナサン・リー

ラムダ関数から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から許可する必要があります。

これが事実である場合、私の解決策は次のようになります。

  • EC2インスタンスのセキュリティグループを変更して、任意のIPからのPostgreSQLポート(5432)接続を許可します。
  • EC2インスタンスでのPostgreSQLの設定で、安全な接続(パスワードとできれば証明書で作成された接続)のみが許可されていることを確認してください。公開される予定なので、安全であることが不可欠です。

より安全にするために、VPCの使用を検討することもできます。https://docs.aws.amazon.com/lambda/latest/dg/vpc.htmlを参照してください

VPCルートを使用する場合にも注意してください。

AWS Lambdaはこの情報を使用して、関数がプライベートVPC内の他のリソースに安全に接続できるようにするエラスティックネットワークインターフェース(ENI)をセットアップします。

ENIを使用すると、AWSがENIプロビジョニング時間の問題を解決するまで、Lambdaのコールドスタート時間が長くなる可能性があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

EC2からS3に接続できません

分類Dev

EC2インスタンスからロードバランサーに接続できません

分類Dev

Quartz.netはPostgresDBに接続できません

分類Dev

CentOS6.5上のPHPはPostgresDBに接続できません

分類Dev

NodeJSからMySQLに接続できません

分類Dev

NodeJs:Google AppEngineからGoogleCloudSQLに接続できません

分類Dev

QMetaMethodをラムダに接続できません

分類Dev

ホーム接続からサーバーにSSH接続できません

分類Dev

AWSの外部からHTTP経由でEC2インスタンスに接続できません

分類Dev

EC2で実行されているDockerコンテナからelasticacheredisに接続できません

分類Dev

Elixir / PhoenixはクラウドでホストされているPostgresDBに接続できません

分類Dev

同じVPC内のEC2インスタンスからDAXに接続できません

分類Dev

NodeJSプログラムからMongoDBへのSSL接続を確立できません

分類Dev

PythonからDb2に接続できません

分類Dev

GAEからGoogleCloud 2ndGenに接続できません

分類Dev

EC2Linuxでmongoに接続できません

分類Dev

Azure Web アプリに接続できません - NodeJS から Azure Mysql に

分類Dev

EC2TomcatはMySQLに接続できません

分類Dev

EC2TomcatはMySQLに接続できません

分類Dev

Nodejsに接続できません

分類Dev

neo4jドライバーを使用してnodejsからneo4jに接続できません

分類Dev

neo4jドライバーを使用してnodejsからneo4jに接続できません

分類Dev

私のラムダとEC2はVPCにあり、ラムダからkinesisにputRecordsを設定することはできませんが、EC2からはできます

分類Dev

XamarinアプリからIBMIOTプラットフォームに接続できません

分類Dev

Amazon EC2およびPostgreSQL:タイムアウトエラーのため接続できません

分類Dev

WSL2に更新した後、PhpStormからXdebugに接続できません

分類Dev

CLI から AWS Windows 2016 インスタンスへの接続エラー - エンドポイント URL に接続できませんでした:「https://ec2.us-west-2a.amazonaws.com/」

分類Dev

ClientConnectorCertificateError:ホストdiscordapp.com:443に接続できません、AWSでの認証エラー(ec2)

分類Dev

クラスタ内からkubernetes APIに接続できません

Related 関連記事

  1. 1

    EC2からS3に接続できません

  2. 2

    EC2インスタンスからロードバランサーに接続できません

  3. 3

    Quartz.netはPostgresDBに接続できません

  4. 4

    CentOS6.5上のPHPはPostgresDBに接続できません

  5. 5

    NodeJSからMySQLに接続できません

  6. 6

    NodeJs:Google AppEngineからGoogleCloudSQLに接続できません

  7. 7

    QMetaMethodをラムダに接続できません

  8. 8

    ホーム接続からサーバーにSSH接続できません

  9. 9

    AWSの外部からHTTP経由でEC2インスタンスに接続できません

  10. 10

    EC2で実行されているDockerコンテナからelasticacheredisに接続できません

  11. 11

    Elixir / PhoenixはクラウドでホストされているPostgresDBに接続できません

  12. 12

    同じVPC内のEC2インスタンスからDAXに接続できません

  13. 13

    NodeJSプログラムからMongoDBへのSSL接続を確立できません

  14. 14

    PythonからDb2に接続できません

  15. 15

    GAEからGoogleCloud 2ndGenに接続できません

  16. 16

    EC2Linuxでmongoに接続できません

  17. 17

    Azure Web アプリに接続できません - NodeJS から Azure Mysql に

  18. 18

    EC2TomcatはMySQLに接続できません

  19. 19

    EC2TomcatはMySQLに接続できません

  20. 20

    Nodejsに接続できません

  21. 21

    neo4jドライバーを使用してnodejsからneo4jに接続できません

  22. 22

    neo4jドライバーを使用してnodejsからneo4jに接続できません

  23. 23

    私のラムダとEC2はVPCにあり、ラムダからkinesisにputRecordsを設定することはできませんが、EC2からはできます

  24. 24

    XamarinアプリからIBMIOTプラットフォームに接続できません

  25. 25

    Amazon EC2およびPostgreSQL:タイムアウトエラーのため接続できません

  26. 26

    WSL2に更新した後、PhpStormからXdebugに接続できません

  27. 27

    CLI から AWS Windows 2016 インスタンスへの接続エラー - エンドポイント URL に接続できませんでした:「https://ec2.us-west-2a.amazonaws.com/」

  28. 28

    ClientConnectorCertificateError:ホストdiscordapp.com:443に接続できません、AWSでの認証エラー(ec2)

  29. 29

    クラスタ内からkubernetes APIに接続できません

ホットタグ

アーカイブ