如何从 Lambda 函数连接到 serverless.yml 中 "Resources" 下定义的 RDS?
How do I connect to an RDS defined under "Resources" in serverless.yml from a Lambda function?
假设我的 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 函数如何连接到这个数据库,即 hostname/ip 和 where/how 是什么,我可以捕获它吗?
谢谢!
使用 cloudformation 的 GetAtt
函数从 DBCluster 创建中访问 return 值:
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 return 值的更多信息:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#aws-properties-rds-database-instance-return-values
假设我的 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 函数如何连接到这个数据库,即 hostname/ip 和 where/how 是什么,我可以捕获它吗?
谢谢!
使用 cloudformation 的 GetAtt
函数从 DBCluster 创建中访问 return 值:
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 return 值的更多信息:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#aws-properties-rds-database-instance-return-values