如何在cloudformation中获取Elastic Beanstalk EC2实例的instanceId?
我使用elasticbeanstalk Template
和elasticBeanstalk environment
创建了一个弹性beanstalk。现在我需要引用那个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
我有弹性beanstalk的基本配置。在这里,我想为我的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}"
答案 0 :(得分:1)
您可以使用CloudFormation CustomResource来调用lambda函数。
如果您的lambda将根据ElasticBeanstalk提供给EC2实例的标签密钥描述弹性计算云实例,请获取实例ID。
Lambda函数将向CloudFormation端点发送响应