AWS Lambda通过PG.js连接到RDS Postgres数据库(建立连接,没有超时,但是没有数据库?)

博士博士

我的lambda函数正在尝试连接到RDS PostGreSQL DB。由于我使用https://serverless.com/部署了该功能(设置了我的Cloudfront),因此将LF放置在与RDS DB分开的VPC中。

不是大问题。如果您阅读:https : //docs.aws.amazon.com/lambda/latest/dg/services-rds-tutorial.html您会看到可以使用子网和安全组设置serverless.yml文件(如下所示) ID,然后为具有AWSLambdaVPCAccessExecutionRole的Lambda函数赋予角色(我为VPC和Lambda赋予了全部功能)。如果您不这样做,您将获得ECONNREFUESED。

但是,即使这样做,我仍然收到3D00错误,该错误表明找不到名为“ ysgdb”的数据库。但是在RDS中,我看到它在那里并且是公开的。

当数据库设置为本地PostGreSQL时,代码可以正常工作。

有什么下一步的想法吗?

# serverless.yml

service: lambdadb
provider:
  name: aws
  stage: dev
  region: us-east-2
  runtime: nodejs10.x
functions:
  dbConn:
    # this is formatted as <FILENAME>.<HANDLER>
    handler: main.handler
    vpc:
      securityGroupIds:
        - sg-a1e6f4c3
      subnetIds:
        - subnet-53b45038
        - subnet-4a2a7830
        - subnet-1469d358
    events:
    - http:
        path: lambdadb
        method: post
        cors: true
    - http:
        path: lambdadb
        method: get
        cors: true

回复

{
  "statusCode": 200,
  "headers": {
    "Content-Type": "application/json"
  },
  "body": {
    "name": "error",
    "length": 90,
    "severity": "FATAL",
    "code": "3D000",
    "file": "postinit.c",
    "line": "880",
    "routine": "InitPostgres"
  },
  "isBase64Encoded": false
}

server.js

const aws = {
    user: "postgres",
    host: "ysgdb.cxeokcheapqj.us-east-2.rds.amazonaws.com",
    database: "ysgdb",
    password: "***",
    port: 5432
}

console.log(`PostgreSQL GET Function`)

const { Client } = require('pg')

const local = {
    user: "postgres",
    host: "localhost",
    database: "m3_db",
    password: "xxxx",
    port: 5432
}

const aws = {
    user: "postgres",
    host: "ysgdb.cxeokcheapqj.us-east-2.rds.amazonaws.com",
    database: "ysgdb",
    password: "xxxx",
    port: 5432
}

let response = {
    "statusCode": 200,
    "headers": {
        "Content-Type": "application/json"
    },
    "body": 'none',
    "isBase64Encoded": false
}

exports.handler = async (event, context, callback) => {
    const c = aws // switch to local for the local DB
    console.log(`aws credentials: ${JSON.stringify(c)}`)
    const client = new Client({
        user: c.user,
        host: c.host,
        database: c.database,
        password: c.password,
        port: c.port
    })
    try {
        await client.connect();
        console.log(`DB connected`)
    } catch (err) {
        console.error(`DB Connect Failed: ${JSON.stringify(err)}`)
        response.body = err
        callback(null, response)
    }

    client.query('SELECT NOW()', (err, res) => {
        if (err) {
            console.log('Database ' + err)
            response.body = err
            callback(null, response)
        } else {
            response.body = res
            callback(null, response)
        }
        client.end()
    })
}


if (process.env.USERNAME == 'ysg4206') {
    this.handler(null, null, (_, txt) => {console.log(`callback: ${JSON.stringify(txt)}`)})
} 
博士博士

我找到了答案。尽管这显示了我的愚蠢,但我想将其发布在此处,以防其他人遇到相同的问题。

创建RDS(自定义)PostGreSQL时,我指定了数据库名称。我几乎不知道表单中大约有20个字段,您指定了dbname的第二个位置。如果不这样做,它会说它不会创建数据库,并且不会分配任何名称(控制台显示“-”作为名称。

名字是端点的第一部分。第二次指定名称是针对数据库本身的。

设置RDS时,我将PostGreSQL用于安全性/登录。

希望这对某人有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

连接 AWS lambda 和 RDS 数据库时超时

来自分类Dev

即使您的数据库中没有建立连接,AWS RDS也会向您收费吗?

来自分类Dev

AWS Lambda上的节点功能无法使用node-pg连接到数据库

来自分类Dev

如何通过kubectl连接在私有PVC上运行的AWS RDS数据库实例

来自分类Dev

AWS Lambda Java,连接到MySQL RDS

来自分类Dev

通过.net SDK连接到AWS RDS

来自分类Dev

无法通过PDO连接到AWS RDS

来自分类Dev

在AWS Lambda函数中连接到MongoDB数据库时,“任务在...后超时”

来自分类Dev

Eclipse通过SSH代理连接到MySql,但没有数据库限定符就无法查询

来自分类Dev

AWS:无法从我的机器连接到RDS数据库

来自分类Dev

无法连接到 AWS-RDS MySql 数据库

来自分类Dev

Laravel 连接到没有数据库的 MySQL

来自分类Dev

在没有 VPC 的情况下从 Lambda 连接到公共 Redshift 数据库

来自分类Dev

AWS Lambda - 无法连接到 VPC 中的 SQL Server RDS

来自分类Dev

不可能从 AWS Lambda 连接到 RDS MySQL

来自分类Dev

非 AWS 服务器连接到 AWS RDS 数据库要慢得多

来自分类Dev

没有数据库定义的JDBC连接

来自分类Dev

PHP CRUD没有数据库连接?

来自分类Dev

无法连接到AWS RDS

来自分类Dev

如何在AWS Lambda中抽象数据库连接?

来自分类Dev

跨多个AWS Lambda调用重用数据库连接

来自分类Dev

AWS Lambda 中的 Oracle 数据库连接

来自分类Dev

我如何在没有密码的情况下通过Apache中的脚本连接到本地Postgres数据库

来自分类Dev

AWS ElasticBeanstalk上的Laravel应用程序未连接到RDS数据库

来自分类Dev

如何安装和配置RMySQL以连接到远程MySQL数据库(AWS RDS)?

来自分类Dev

使用 beanstalk 和 PHP 连接到 AWS RDS 数据库

来自分类Dev

无法通过RDS代理连接到RDS PostgreSQL数据库实例

来自分类Dev

AWS Lambda无法连接到RDS实例,但是我可以在本地连接吗?

来自分类Dev

如何通过Ruby的pg gem连接到Postgres数据库(Rails外部)

Related 相关文章

  1. 1

    连接 AWS lambda 和 RDS 数据库时超时

  2. 2

    即使您的数据库中没有建立连接,AWS RDS也会向您收费吗?

  3. 3

    AWS Lambda上的节点功能无法使用node-pg连接到数据库

  4. 4

    如何通过kubectl连接在私有PVC上运行的AWS RDS数据库实例

  5. 5

    AWS Lambda Java,连接到MySQL RDS

  6. 6

    通过.net SDK连接到AWS RDS

  7. 7

    无法通过PDO连接到AWS RDS

  8. 8

    在AWS Lambda函数中连接到MongoDB数据库时,“任务在...后超时”

  9. 9

    Eclipse通过SSH代理连接到MySql,但没有数据库限定符就无法查询

  10. 10

    AWS:无法从我的机器连接到RDS数据库

  11. 11

    无法连接到 AWS-RDS MySql 数据库

  12. 12

    Laravel 连接到没有数据库的 MySQL

  13. 13

    在没有 VPC 的情况下从 Lambda 连接到公共 Redshift 数据库

  14. 14

    AWS Lambda - 无法连接到 VPC 中的 SQL Server RDS

  15. 15

    不可能从 AWS Lambda 连接到 RDS MySQL

  16. 16

    非 AWS 服务器连接到 AWS RDS 数据库要慢得多

  17. 17

    没有数据库定义的JDBC连接

  18. 18

    PHP CRUD没有数据库连接?

  19. 19

    无法连接到AWS RDS

  20. 20

    如何在AWS Lambda中抽象数据库连接?

  21. 21

    跨多个AWS Lambda调用重用数据库连接

  22. 22

    AWS Lambda 中的 Oracle 数据库连接

  23. 23

    我如何在没有密码的情况下通过Apache中的脚本连接到本地Postgres数据库

  24. 24

    AWS ElasticBeanstalk上的Laravel应用程序未连接到RDS数据库

  25. 25

    如何安装和配置RMySQL以连接到远程MySQL数据库(AWS RDS)?

  26. 26

    使用 beanstalk 和 PHP 连接到 AWS RDS 数据库

  27. 27

    无法通过RDS代理连接到RDS PostgreSQL数据库实例

  28. 28

    AWS Lambda无法连接到RDS实例,但是我可以在本地连接吗?

  29. 29

    如何通过Ruby的pg gem连接到Postgres数据库(Rails外部)

热门标签

归档