Cloudformation-如果已使用Auto Scaling组和启动配置创建实例,如何引用EC2实例的实例ID

问题描述 投票:0回答:1

我正在尝试创建EBS卷并将其附加到我的EC2实例。该实例具有自己的Auto Scaling组和启动配置。我希望这样,如果此实例变得不正常并终止,则EBS卷应自动附加到由Auto Scaling Group旋转的新实例。挂载命令位于启动配置中,因此这不是问题。

这是我的代码:

Influxdbdata1Asg:
 Type: 'AWS::AutoScaling::AutoScalingGroup'
 Properties:
  TargetGroupARNs:
    - !Ref xxxx
  VPCZoneIdentifier:
    - !GetAtt 'NetworkInfo.PrivateSubnet1Id'
  LaunchConfigurationName: !Ref yyyy
  MinSize: 1
  MaxSize: 1
  DesiredCapacity: 1
Data1:
 Type: AWS::EC2::Volume
 DeletionPolicy: Retain
 Properties:
  Size: !Ref 'DataEbsVolumeSize'
  AvailabilityZone: !GetAtt 'NetworkInfo.PrivateSubnet1Id'
  Tags:
    - Key: Name
      Value: !Join 
        - '-'
        - - !Ref 'AWS::StackName'
          - data1
Attachdata1:
 Type: AWS::EC2::VolumeAttachment
 Properties:
  InstanceId: !Ref ????
  VolumeId: !Ref Data1
  Device: /dev/xvdb
amazon-web-services amazon-ec2 amazon-cloudformation
1个回答
0
投票

对于这个问题,您特别想使用Lifecycle Hooks,它在实例终止或启动时触发。

为此,您的生命周期挂钩将通知您的SNS通知,该通知随后将调用Lambda函数。在确认生命周期操作完成之前,此Lambda函数将执行更改。

有一篇关于此here的博客文章。

您的问题提到CloudFormation,但是这仍然涉及生命周期挂钩来触发操作。您将需要一个具有AWS::EC2::VolumeAttachment资源的CloudFormation堆栈。 Lambda将需要更新堆栈中的“ InstanceId”属性以执行此更改。

© www.soinside.com 2019 - 2024. All rights reserved.