在AWS CloudFormation中定义表,视图和索引

时间:2017-08-07 18:26:19

标签: amazon-web-services amazon-redshift amazon-cloudformation amazon-rds-aurora

在AWS CloudFormation中,您可以使用JSON / YAML模板定义一组服务。特别是,我使用的是RedshiftAurora群集。

模板允许您定义集群的管理属性,但似乎没有明确的方法来定义集群中的表,视图和索引,这样当我推送堆栈更新时,数据库会自动更新根据需要使用模式,类似于管理对完整堆栈的更新的方式。

有没有办法在Cloud Formation中管理Redshift和Aurora数据库的架构?

2 个答案:

答案 0 :(得分:1)

Amazon CloudFormation可用于创建AWS资源。可以将其视为代表您调用标准AWS API

'内容'可以通过AWS API调用来控制资源, CloudFormation也可以管理它。例如,在Amazon DynamoDB中创建一个表,在Amazon S3中创建一个存储桶,在Amazon Kinesis中创建一个流。这些是区域范围内并由AWS 完全提供的服务示例。

相反,如果必须在可用区内部署服务,则CloudFormation无法访问。示例包括:Amazon EC2实例,Amazon RDS实例,Amazon Redshift群集,Amazon EMR群集和Amazon Elasticsearch群集。他们都在虚拟机上运行和'内容' AWS API调用无法访问。

在此类系统中执行自动操作的唯一方法是直接调用。例如,建立与数据库的JDBC连接,然后传递一些SQL命令。这可以通过Amazon EC2实例上运行的应用程序,AWS Lambda函数或连接到Internet的任何计算机来完成。

Amazon CloudFormation可以触发AWS Lambda-backed Custom Resources。然后,这个Lambda函数可以执行几乎任何函数,但是您将负责编写此函数。

答案 1 :(得分:1)

在Progess工作!! 一旦我确定它正在运行,我会更新!

所以抓取文档,Github和与AWS聊天的一小时产生我可能需要创建parent and child stackexample templates)。父堆栈将包含监视子堆栈的SNS TopicSNS SubscriptionLambda Function

父堆栈可能看起来像

AWSTemplateFormatVersion: '2010-09-09'
Resources:
  StackEventTopic:
    Type: AWS::SNS::Topic

  StackEventEmailSubscription:
    Type: AWS::SNS::Subscription
    Properties:
      Protocol: email
      Endpoint: <your email>@gmail.com
      TopicArn:
        Ref: StackEventTopic

  StackEventLambdaSubscription:
    Type: AWS::SNS::Subscription
    Properties:
      Protocol: lambda
      Endpoint:
        Ref: StackEventHandler
      TopicArn:
        Ref: StackEventTopic

  StackEventHandler:
    Type: AWS::Lambda::Function
    Properties:
      ... configure your Lambda ...

  ChildStack:
    Type: AWS::CloudFormation::Stack
    Properties:
      NotificationARNs:
        Ref: StackEventTopic
      TemplateURL: "s3 url for template YAML"