如何在cloudformation中获取Elastic Beanstalk EC2实例的instanceId?

时间:2018-06-05 06:03:08

标签: amazon-web-services amazon-ec2 elastic-beanstalk amazon-cloudformation

如何在cloudformation中获取Elastic Beanstalk EC2实例的instanceId?

我使用elasticbeanstalk TemplateelasticBeanstalk 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}"

1 个答案:

答案 0 :(得分:1)

您可以使用CloudFormation CustomResource来调用lambda函数。

如果您的lambda将根据ElasticBeanstalk提供给EC2实例的标签密钥描述弹性计算云实例,请获取实例ID。

Lambda函数将向CloudFormation端点发送响应