我有一个CloudFormation模板,它正在使用OpsWorks启动一个中央服务器实例(所以我定义了一个OpsWorks::App,OpsWorks:: instance,OpsWorks::Layer和OpsWorks::堆栈)。在CF模板的其他地方,它正在为从节点启动一个EC2实例,该节点需要知道中心服务器的IP地址/ DNS名称,以便启动与服务器的通信。Opsworks服务器获得一个弹性IP,但不是我显式给它的,相反,OpsWorks层将AutoAssignElasticIps设置为true。
如果它是一个引用另一个实例的EC2实例,我只需使用{ "Fn::GetAtt":“MyServerInstance”,“PublicDnsName” }来获取地址。但是,AWS::OpsWorks::Instance不同于AWS:: EC2 ::Instance (尽管它确实创建了EC2实例),因此模板验证失败:
模板验证错误:模板错误:资源MyServerInstance不支持Fn::GetAtt中的属性类型PublicDnsName
还有其他方法来获取已启动的OpsWorks实例的地址吗?还是可以从AWS::OpsWorks::实例中获得AWS::EC2::Instance,这样我就可以向它请求PublicDnsName了吗?
发布于 2015-07-16 13:17:54
通过CloudFormation是不可能的,您必须在OpsWorks层上使用食谱。
发布于 2015-10-27 15:40:40
您还可以安装aws和厨师食谱,并解析其中的详细信息(我使用此方法将EC2引导到VPC的NAT中)。这假设您正在“本地”运行,或者需要从另一台机器运行.
https://serverfault.com/questions/695280
复制相似问题