如何在 cloudformation 中获取 Elastic Beanstalk EC2 实例的 instanceId?
Posted
技术标签:
【中文标题】如何在 cloudformation 中获取 Elastic Beanstalk EC2 实例的 instanceId?【英文标题】:How to get the instanceId of an Elastic Beanstalk EC2 instance in cloudformation? 【发布时间】:2018-11-14 12:36:03 【问题描述】:如何在cloudformation中获取Elastic Beanstalk EC2实例的instanceId?
我使用elasticbeanstalk Template
和elasticBeanstalk environment
创建了一个弹性豆茎。现在我需要在某处引用该 EB 的 instanceId。如何在 cloudformation 中做到这一点?
或者我可以使用一些解决方法从我的 EB 某处获取底层 EC2 实例,然后只获取该 EC2 的 instanceID(可行)。
这是我的模板的一部分。我有一个 EIP,我想将它与我的 EB EC2 的 instanceId 相关联。最后一行不起作用(instanceId)
Resources:
ProxyEIP:
Type: "AWS::EC2::EIP"
ProxyEIPAssocation:
Type: "AWS::EC2::EIPAssociation"
Properties:
InstanceId: !GetAtt ProxyEnvironment.InstanceId
我的弹性豆茎有一个基本配置。在这里,我想为我的 IP 创建一个环境属性。
ProxyConfiguration:
Type: AWS::ElasticBeanstalk::ConfigurationTemplate
Properties:
ApplicationName: !ImportValue ProxyApplication
OptionSettings:
..
- Namespace: aws:elasticbeanstalk:application:environment
OptionName: nginx_IP
Value: !Ref ProxyEIP
我的环境使用哪个
ProxyEnvironment:
Type: AWS::ElasticBeanstalk::Environment
Properties:
EnvironmentName: !Sub "Proxy-$Environment"
ApplicationName: !ImportValue ProxyApplication
TemplateName: !Ref ProxyConfiguration
CNAMEPrefix: !Sub "nginx-$Environment"
【问题讨论】:
你能解释更多你想要做什么的场景吗?您在环境的第一次初始化期间是否需要 InstanceId?或者在您的环境更新期间?有关您的总体目标和要求的更多详细信息将有助于我们尝试和解决。 【参考方案1】:您可以使用 CloudFormation CustomResource 来调用 lambda 函数。
您的 lambda 将根据 ElasticBeanstalk 提供给 EC2 实例的标签键描述弹性计算云实例,获取实例 ID。
Lambda 函数将向 CloudFormation 端点发送响应
【讨论】:
以上是关于如何在 cloudformation 中获取 Elastic Beanstalk EC2 实例的 instanceId?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 AWS Cloudformation 模板文件中获取用户名?
如何在 Cloudformation 中获取区域 AWS API 网关的自定义域的目标域名?
如何通过 Cloudformation 在 Beanstalk 实例上获取 SSL 证书
AWS CloudFormation 模板:如何获取模板信息?