在 AWS CloudFormation 中定义表、视图和索引
Defining Tables, Views, and Indexes in AWS CloudFormation
在 AWS CloudFormation 中,您可以使用 JSON/YAML 模板定义服务堆栈。特别是,我正在使用 Redshift and Aurora 集群。
该模板允许您定义集群的管理属性,但似乎没有明确的方法来定义集群中的表、视图和索引,因此当我推送堆栈更新时,数据库的根据需要自动更新模式,类似于它管理更新到完整堆栈的方式。
有没有办法在 Cloud Formation 中管理 Redshift 和 Aurora 数据库的架构?
Amazon CloudFormation 可用于创建 AWS 资源。将其视为 代表您调用标准 AWS APIs。
资源的 'contents' 可以通过 AWS API 调用控制,
CloudFormation 也可以管理它。例如,在 Amazon DynamoDB 中创建一个 table,在 Amazon S3 中创建一个存储桶,在 Amazon Kinesis 中创建一个流。这些是 区域范围内且完全由 AWS.
提供的服务示例
相比之下,如果必须在可用区内部署服务,则 CloudFormation 无权访问。例如:Amazon EC2 实例、Amazon RDS 实例、Amazon Redshift 集群、Amazon EMR 集群和 Amazon Elasticsearch 集群。它们都 运行 位于虚拟机 之上,而 'contents' 无法通过 AWS API 调用访问。
在此类系统中执行自动操作的唯一方法是直接调用它们。例如,建立与数据库的 JDBC 连接,然后传递一些 SQL 命令。这可以通过 Amazon EC2 实例上的应用程序 运行ning、AWS Lambda 函数或连接到 Internet 的任何计算机来完成。
Amazon CloudFormation 可以触发 AWS Lambda-backed Custom Resources。此 Lambda 函数随后可以执行几乎任何功能,但您将负责编写此函数的代码。
工作进行中!!一旦我确定它正在工作,我会更新!
因此,通过抓取文档、Github 和与 AWS 聊天一个小时,我可能需要创建一个 parent and child stack (example templates). The parent stack would contain a SNS Topic, SNS Subscription and 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"
在 AWS CloudFormation 中,您可以使用 JSON/YAML 模板定义服务堆栈。特别是,我正在使用 Redshift and Aurora 集群。
该模板允许您定义集群的管理属性,但似乎没有明确的方法来定义集群中的表、视图和索引,因此当我推送堆栈更新时,数据库的根据需要自动更新模式,类似于它管理更新到完整堆栈的方式。
有没有办法在 Cloud Formation 中管理 Redshift 和 Aurora 数据库的架构?
Amazon CloudFormation 可用于创建 AWS 资源。将其视为 代表您调用标准 AWS APIs。
资源的 'contents' 可以通过 AWS API 调用控制, CloudFormation 也可以管理它。例如,在 Amazon DynamoDB 中创建一个 table,在 Amazon S3 中创建一个存储桶,在 Amazon Kinesis 中创建一个流。这些是 区域范围内且完全由 AWS.
提供的服务示例相比之下,如果必须在可用区内部署服务,则 CloudFormation 无权访问。例如:Amazon EC2 实例、Amazon RDS 实例、Amazon Redshift 集群、Amazon EMR 集群和 Amazon Elasticsearch 集群。它们都 运行 位于虚拟机 之上,而 'contents' 无法通过 AWS API 调用访问。
在此类系统中执行自动操作的唯一方法是直接调用它们。例如,建立与数据库的 JDBC 连接,然后传递一些 SQL 命令。这可以通过 Amazon EC2 实例上的应用程序 运行ning、AWS Lambda 函数或连接到 Internet 的任何计算机来完成。
Amazon CloudFormation 可以触发 AWS Lambda-backed Custom Resources。此 Lambda 函数随后可以执行几乎任何功能,但您将负责编写此函数的代码。
工作进行中!!一旦我确定它正在工作,我会更新!
因此,通过抓取文档、Github 和与 AWS 聊天一个小时,我可能需要创建一个 parent and child stack (example templates). The parent stack would contain a SNS Topic, SNS Subscription and 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"