繁体   English   中英

使用CloudFormation在VPC中创建AWS缓存集群

[英]Create AWS cache clusters in VPC with CloudFormation

我正在使用CloudFormation在VPC内创建AWS堆栈,并且需要在其上创建ElastiCache集群。 我已经调查过,CloudFormation不支持在VPC中创建缓存集群。 我们的“解决方法”是使用CloudInit和AWS AmazonElastiCacheCli工具(elasticache-create-cache-subnet-group,elasticache-create-cache-cluster)在一些“固定”实例(例如堡垒)引导时创建缓存集群。 然后,当前端机器引导程序(我们使用自动扩展)时,它们使用elasticache-describe-cache-clusters来获取缓存集群节点并更新配置。

我想知道你是否有不同的解决方案来解决这个问题。

您的解决方法是合理的(并且表明您似乎已经控制了您的AWS操作)。

您最终可以通过专用的CustomResource类型改进自定义解决方案,这些类型是特殊的AWS CloudFormation资源,为模板开发人员提供了一种方式,可以将资源包含在由Amazon Web Services以外的源提供的AWS CloudFormation堆栈中。 - AWS CloudFormation自定义资源演练提供了对此内容的全面概述,工作原理以及实现自己需要的内容。

将此外观用于自定义资源(即您的案例中的Amazon ElastiCache群集)的好处是,它的整个生命周期(创建/更新/删除)可以像任何官方支持的CloudFormation资源类型一样以类似和受控的方式处理,例如,从整个堆栈的角度来看,资源创建失败将被透明地处理。

但是,对于手头的用例,您可能实际上只是想等待官方支持变得可用:

  • AWS在最近的主要Amazon EC2更新 - 每个人的虚拟私有云的背景下宣布了对ElastiCache的VPC支持 ,归结为(几乎)每个人的默认VPC

    我们希望每个EC2用户都能够从我上面概述的Amazon VPC的高级网络和其他功能中受益。 为了实现这一目标,即将开始,新AWS客户(以及在新区域中启动的现有客户)的实例将启动到“EC2-VPC”平台。 [...]

    您无需事先创建VPC - 只需启动EC2实例或配置Elastic Load Balancers,RDS数据库或ElastiCache集群,就像您在EC2-Classic中一样,我们将为您创建一个VPC,无需额外费用。 我们会将您的资源投入到该VPC [...] [强调我的]

  • 此更新意味着任何新服务都可能在VPC中立即可用(否则新的EC2-VPC平台将不会像预想的那样自动为新客户工作)。
因此,我希望CloudFormation团队能够效仿并完成/修改他们对VPC部署的支持。

现在已在Cloudformation模板中为Elasticache添加了VPC支持。

要在您的VPC中启动AWS::ElastiCache::CacheCluster ,请创建一个AWS::ElastiCache::SubnetGroup ,用于定义您希望Elasticache在您的VPC中的哪个子网,并将其分配给AWS::ElastiCache::CacheClusterCacheSubnetGroupName属性。

我的解决方案是拥有一个轮询消息队列的控制器进程,该消息队列订阅了我通知CloudFormation事件的SNS主题(当您创建CloudFormation堆栈以向SNS主题发送通知时,单击控制台中的高级) 。

我将所需的参数作为标记传递给AWS :: EC2 :: Subnet,并在创建子网时让控制器选择它们。 我在创建AWS :: CloudFormation :: WaitConditionHandle时执行设置,并使用PhysicalResourceId与pUT进行cURL以满足AWS :: CloudFormation :: WaitCondition。

它有点工作,但不处理ElastiCache中的资源删除,因为没有AWS :: CloudFormation :: WaitCondition模拟用于堆栈删除。 这是我的方法的手动操作程序。

CustomResource方法看起来更精致,但需要一个我没有的端点。 如果你可以把端点放在一起,那就像是要走的路。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM