【问题标题】:Creating an Aurora Serverless Cluster from cloudformation?从 cloudformation 创建 Aurora Serverless 集群?
【发布时间】: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)。

是否可以从 cloudformation 创建 Aurora Serverless 集群?任何建议将不胜感激!

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation serverless amazon-aurora aws-aurora-serverless


    【解决方案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 天前,EngineModeScalingConfiguration 属性在 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

      【讨论】:

      【解决方案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 的好资源!
      • 不客气!是的,这是一个很棒的网站,模式/模板和视频都很棒,真的可以加快我的开发速度,我构建的任何微服务总是值得检查一下是否已经有模板
      猜你喜欢
      • 2020-10-03
      • 2020-10-17
      • 2021-04-13
      • 2021-11-28
      • 2017-01-15
      • 1970-01-01
      • 1970-01-01
      • 2023-01-12
      • 2015-08-23
      相关资源
      最近更新 更多