我有一个利用Docker平台的Elastic Beanstalk应用程序设置。 一切运行顺利,我可以使用eb deploy cli命令重新部署应用程序。 该应用程序安装在一个自定义VPC(我几乎不了解),并可通过networking访问。
我想添加一个Memcached ElastiCache集群到我的应用程序。 我尝试通过控制台手动创build群集,但我似乎无法连接到它(不pipe我如何设置)从我的应用程序(我试过从Elastic Beanstalk实例telnetting)。 我已经添加了一个.ebextensions目录到我的应用程序,并尝试添加一个EB指令为我创buildcaching集群。 我曾尝试使用AWS示例模板,但没有奏效。 我已经尝试更改设置,甚至尝试简化指令到最低限度所需的参数,以获得EB创build群集。 没有什么我正在做的似乎工作。 下面是我目前的文件:
Resources: MyElastiCache: Type: "AWS::ElastiCache::CacheCluster" Properties: CacheNodeType: "cache.t2.small" NumCacheNodes: "1" Engine: "memcached" VpcSecurityGroupIds: - sg-XXXXXXXX CacheSubnetGroupName: "subnet-XXXXXXXX"
对于VpcSecurityGroupIds ,我已经尝试了EC2安全组和VPC安全组。 似乎也没有帮助。 CacheSubnetGroupName是我的VPC中的一个子网的ID。
这是非常令人沮丧的,因为需要5分钟来testing最小的变化,因为每次尝试新的东西时,EB都必须重新部署我的应用程序。 任何帮助将不胜感激。
编辑:这是我最近的尝试。
Resources: MyElastiCacheSubnetGroup: Type: "AWS::ElastiCache::SubnetGroup" Properties: Description: "Blah blah blah" SubnetIds: - subnet-XXXXXXXX - subnet-XXXXXXXX - subnet-XXXXXXXX - subnet-XXXXXXXX MyElastiCache: Type: "AWS::ElastiCache::CacheCluster" Properties: CacheNodeType: "cache.t2.small" NumCacheNodes: "1" Engine: "memcached" VpcSecurityGroupIds: - sg-XXXXXXXX CacheSubnetGroupName: Ref: "MyElastiCacheSubnetGroup"
和错误去: Service:AmazonCloudFormation, Message:Stack named 'awseb-e-amyvnbtvps-stack' aborted operation. Current state: 'UPDATE_ROLLBACK_IN_PROGRESS' Reason: The following resource(s) failed to create: [MyElastiCacheSubnetGroup]. Service:AmazonCloudFormation, Message:Stack named 'awseb-e-amyvnbtvps-stack' aborted operation. Current state: 'UPDATE_ROLLBACK_IN_PROGRESS' Reason: The following resource(s) failed to create: [MyElastiCacheSubnetGroup].
VpcSecurityGroupIds属性是将被分配给caching集群的一个或多个VPC安全组的列表。
确保其中一个安全组允许从您的EB应用程序的EC2实例的安全组或者包含您的EB应用程序的EC2实例的CIDR在端口11211上进行连接。 没有这个规则,任何连接都会失败。
CacheSubnetGroupName不是VPC子网。
在VPC中创buildcaching集群之前,您需要创buildcaching子网组。 caching子网组是VPC子网的集合。 请参阅以下内容获取更多信息:
http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/SubnetGroups.html
您可以在.ebextensions文件中创buildcaching子网组资源:
Resources: MyElastiCacheSubnetGroup: Type: "AWS::ElastiCache::SubnetGroup" Properties: Description: "Something informational" SubnetIds: - subnet-XXXXXX MyElastiCache: Type: "AWS::ElastiCache::CacheCluster" Properties: CacheNodeType: "cache.t2.small" NumCacheNodes: "1" Engine: "memcached" VpcSecurityGroupIds: - sg-XXXXXXXX CacheSubnetGroupName: Ref: "MyElastiCacheSubnetGroup"
发现,错误是pipe理部署的IAM帐户没有创buildElasticache服务的必要策略。 一旦我给了IAM用户适当的权限。 它开始工作。 不幸的是,这个错误在Elastic Beanstalk事件中没有很好的定义。 我发现这些事件也在Cloudformation中列出,这是我发现权限是问题的地方。