【问题标题】:How do I connect to an RDS defined under "Resources" in serverless.yml from a Lambda function?如何从 Lambda 函数连接到 serverless.yml 中“资源”下定义的 RDS?
【发布时间】:2019-10-10 12:16:49
【问题描述】:

假设我的serverless.yml 中有这样的部分:

resources: 
  Resources:
    RDSCluster:
      Type: AWS::RDS::DBCluster
      Properties:
        MasterUsername: SomeUserName
        MasterUserPassword: SomePassword
        DatabaseName: SomeDatabaseName
        Engine: aurora
        EngineMode: serverless
        ScalingConfiguration:
          AutoPause: true
          MaxCapacity: 16
          MinCapacity: 2
          SecondsUntilAutoPause: 300

我用 node.js 编写的 Lambda 函数如何连接到这个数据库,即主机名/IP 是什么以及我在哪里/如何捕获它?

谢谢!

【问题讨论】:

    标签: amazon-cloudformation serverless-framework


    【解决方案1】:

    使用 cloudformation 的 GetAtt 函数访问 DBCluster 创建的返回值:

    provider:
      environment:
        RDS:
          Fn::GetAtt: [ RDSCluster, Endpoint.Address ]
    

    现在您可以在 node.js 代码中访问 RDS FQDN(主机名+域名),如下所示:

    console.log(process.env.RDS);
    // mystack-mydb-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com
    

    您可以在此处查看有关 DBCluster 资源的 Cloudformation 返回值的更多信息:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#aws-properties-rds-database-instance-return-values

    【讨论】:

      猜你喜欢
      • 2016-07-24
      • 1970-01-01
      • 1970-01-01
      • 2021-03-17
      • 2020-01-23
      • 1970-01-01
      • 2021-06-10
      • 2019-01-28
      • 2016-12-26
      相关资源
      最近更新 更多