在AWS CloudFormation中,您可以使用JSON / YAML模板定义一组服务。特别是,我使用的是Redshift和Aurora群集。
模板允许您定义集群的管理属性,但似乎没有明确的方法来定义集群中的表,视图和索引,这样当我推送堆栈更新时,数据库会自动更新根据需要使用模式,类似于管理对完整堆栈的更新的方式。
有没有办法在Cloud Formation中管理Redshift和Aurora数据库的架构?
答案 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 stack(example templates)。父堆栈将包含监视子堆栈的SNS Topic,SNS Subscription和Lambda 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"