首页 文章

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

提问于
浏览
4

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

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

3 回答

  • 0

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

    您最终可以通过专用的CustomResource类型来改进您的自定义解决方案,这种类型是特殊的AWS CloudFormation资源,为模板开发人员提供了一种方式,可以将资源包含在由Amazon Web Services以外的源提供的AWS CloudFormation堆栈中 . - AWS CloudFormation Custom Resource Walkthrough提供了一个很好的概述,这是什么,它是如何工作的以及实现自己需要什么 .

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

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

    我们希望每个EC2用户都能够从上面概述的Amazon VPC的高级网络和其他功能中受益 . 为了实现这一目标,即将开始,新AWS客户(以及在新区域中启动的现有客户)的实例将启动到“EC2-VPC”平台 . [...]您无需事先创建VPC - 只需启动EC2实例或配置Elastic Load Balancers,RDS数据库或ElastiCache群集,就像您在EC2-Classic中一样,我们将为您创建一个VPC . 额外收费 . 我们会将您的资源投入到该VPC [...] [强调我的]

    • 这种更新意味着任何新服务都可能立即在VPC中可用(否则新的EC2-VPC平台将不会像预想的那样自动为新客户工作) .

    因此,我希望CloudFormation团队能够效仿并完成/修改他们对VPC部署的支持 .

  • 5

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

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

  • 5

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

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

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

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

相关问题