从 cloudformation 创建 Aurora Serverless 集群?
Posted
技术标签:
【中文标题】从 cloudformation 创建 Aurora Serverless 集群?【英文标题】:Creating an Aurora Serverless Cluster from cloudformation? 【发布时间】:2019-01-23 13:40:17 【问题描述】:根据 Aurora Serverless 的文档,创建 Aurora Serverless 数据库集群的方法有 3 种:AWS 管理控制台、CLI 和 RDS API。 (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/aurora-serverless.create.html)
据我了解,有人会在 RDS API 中使用 EngineMode
来创建 Aurora Serverless,但此属性在 AWS::RDS::DBCluster
中尚不可用 (https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html)。
是否可以任何建议将不胜感激!
【问题讨论】:
【参考方案1】:感谢克里斯的更新。例如,这是我的无服务器极光的 cloudFormation 模板。我们不再需要DBInstance
。
RDSCluster:
Type: AWS::RDS::DBCluster
Properties:
MasterUsername:
Ref: DBUsername
MasterUserPassword:
Ref: DBPassword
DatabaseName: RANDOMNAME
Engine: aurora
EngineMode: serverless
ScalingConfiguration:
AutoPause: true
MaxCapacity: 16
MinCapacity: 2
SecondsUntilAutoPause: 300
DBSubnetGroupName:
Ref: DBSubnetGroup
RDS(包括 Aurora)所有可用选项的更完整示例: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html
【讨论】:
感谢您的示例,我觉得那里缺少一些东西,例如子网,您使用了 Ref,但没有关于如何配置它的示例。如果是这样的话,你能用一个更彻底的例子来更新它吗?谢谢! 我也在@Vadorequest 的同一条船上,请您在DBSubnetGroup
中更进一步,好吗?
感谢您的提问!我的DBSubnetGroup
与此处的示例基本相同:docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/…
据我所知,从 SAM/Cloudformation 创建子网和 VPC 很复杂。基于大多数人不会在 SAM 中创建它们并且它们很容易跨堆栈重用的事实,我认为大多数人要么只使用默认的,要么使用 GUI 创建一个新的。我在这里找到了我的默认 VPC 的子网 ID:console.aws.amazon.com/vpc/home?region=us-east-1#subnets:【参考方案2】:
现在可以创建一个AWS::RDS::DBCluster
并将EngineMode
设置为serverless
。在此处查看更多信息:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-enginemode
【讨论】:
【参考方案3】:简单的答案 - 不。直到他们在 CFN 中提供它。截至 1-2 天前,EngineMode
和 ScalingConfiguration
属性在 RDS API 中尚不可用,因为我的 API 调用引发了此错误。首先,他们将提供 API/cli。一旦成功,创建一个 CFN Custom Resource
以从 lambda 调用 RDS API。可能需要一段时间才能在 CFN 中直接使用。
2018-08-15T16:12:09.648Z f57erb2b-g3a5-11e8-8f64-81912181e535 MultipleValidationErrors:有 2 个验证错误: * UnexpectedParameter:在参数中发现意外的键“EngineMode” * UnexpectedParameter:在参数中发现意外的键“ScalingConfiguration”
而且我知道角色/权限不是问题,因为我可以从同一个集群启动正常的 Aurora
集群。
PS:RDS API 现在适用于无服务器
编辑:在 10 月 18 日的某个时间,EngineMode
添加到 CFN,所以现在这是可能的 -> https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-enginemode
【讨论】:
对于查看此答案的其他人,您可以通过以下链接查看是否已将 EngineMode 添加到 CFM:docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/… 截至 2018 年 8 月,它仍然不可用【参考方案4】:我发现一篇文章表明 Go SDK 已使用 EngineMode 参数进行了更新,当我查看 AWS SDK 更改日志时,我发现最新版本中有一些 RDS 更新。我必须手动将我的 AWS CLI 更新到最新版本才能让我的 shell 脚本使用该选项。
https://github.com/aws/aws-cli/releases
https://github.com/aws/aws-cli/blob/develop/CHANGELOG.rst
https://github.com/terraform-providers/terraform-provider-aws/issues/5503
不过,CloudFormation 方面没有消息。
【讨论】:
我昨天刚刚试用了 Go SDK 来创建一个无服务器集群,它工作正常。我是 RDS 新手,所以我检查了所有设置是否正确,但从表面上看,它似乎可以工作。【参考方案5】:对于 Aurora Postgres Serverless,我完整的、可工作的 DBCluster 资源是:
RDSCluster:
Type: AWS::RDS::DBCluster
Properties:
DBClusterIdentifier: !Ref DBClusterName
MasterUsername: some-name
MasterUserPassword: some-password
DatabaseName: some-db-name
Engine: aurora-postgresql
EngineMode: serverless
EngineVersion: '10' # this currently provisions '10.serverless_14'
EnableHttpEndpoint: true # for HTTP API endpoint
ScalingConfiguration:
AutoPause: true
MaxCapacity: 2
MinCapacity: 2 # min 2 currently
SecondsUntilAutoPause: 900 # 15 min
DBSubnetGroupName:
Ref: DBSubnetGroup
【讨论】:
这里如何指定端点本身?我正在尝试进行设置,但无法将您上面的内容与我可以从我的 lambda 调用的可行端点链接起来。 要将 lambda 连接到 Aurora,您可以 1) 按照您的建议使用数据 API 或 2) 用于 lambda,因为我倾向于将大多数服务放在与我的 RDS 相同的 VPC 中,然后仍然可以添加一个SG 到 lambda 允许流量输出(例如,通过端口 5432)和另一个 SG 允许流量进出 RDS(在同一端口,例如 5432),它将像普通 RDS 一样连接。但要回答您的问题,您可以在 AWS RDS 控制台中查看 http 端点,或者将其作为输出添加到您的 SAM template.yaml 的末尾 - 实际上这是一个完整的(AWS 授权)示例:serverlessland.com/patterns/lambda-aurora跨度> 谢谢,你分享了@Leigh 的好资源! 不客气!是的,这是一个很棒的网站,模式/模板和视频都很棒,真的可以加快我的开发速度,我构建的任何微服务总是值得检查一下是否已经有模板以上是关于从 cloudformation 创建 Aurora Serverless 集群?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 aws cloudformation 模板为特定资源类型创建堆栈
从现有 RDS 数据库实例 (Aurora PostgreSQL) 创建 CloudFormation Yaml
从 CloudFormation 启用 Aurora 数据 API
从 s3 部署包结构问题上传 cloudformation lambda 函数