【问题标题】:How to get the instanceId of an Elastic Beanstalk EC2 instance in cloudformation?如何在 cloudformation 中获取 Elastic Beanstalk EC2 实例的 instanceId?
【发布时间】:2018-11-14 12:36:03
【问题描述】:

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

我使用elasticbeanstalk TemplateelasticBeanstalk 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?或者在您的环境更新期间?有关您的总体目标和要求的更多详细信息将有助于我们尝试和解决。

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2018-04-18
    • 2020-10-23
    • 2020-02-23
    • 2017-09-10
    • 2017-06-16
    • 2018-08-31
    • 2018-04-08
    • 2011-07-10
    • 2017-10-08
    相关资源
    最近更新 更多