es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

AWS CloudFormation no respeta las dependencias implícitas.

Utilizando CloudFormation he creado una instancia EC2 con un volumen EBS adjunto. Aunque la creación funciona perfectamente, la eliminación siempre falla porque CloudFormation intenta eliminar el volumen EBS antes de la instancia EC2, por lo que ocurre un error predecible.

El volumen vol-xxxxxx está actualmente adjunto a i-xxxxxx

En la plantilla, no hay una dependencia explícita, pero mi entendimiento es que las dependencias también pueden ser implícitas. Como se puede ver en el código siguiente, el VolumeId especificado para la instancia EC2 es !Ref SasEbsVolume, por lo tanto la dependencia es implícita, y la instancia EC2 debería ser eliminada antes del volumen EBS.

Recursos:
SasEbsVolume:
Type: AWS::EC2::Volume
DeletionPolicy: Snapshot
Properties:

SasInstance:
Type: AWS::EC2::Instance
Properties:

Volumes:
– Device: /dev/xvdd
VolumeId: !Ref SasEbsVolume

Entonces, ¿mi comprensión de cómo funcionan las dependencias en CloudFormation es incorrecta, en cuyo caso puedo declarar una dependencia explícita, o CloudFormation no está haciendo lo que se supone que debe hacer?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Tu comprensión de cómo funcionan las dependencias en CloudFormation es correcta. Puedes declarar una dependencia explícita entre la instancia EC2 y el volumen EBS agregando el atributo DependsOn al recurso de instancia EC2 en la plantilla. Esto asegurará que la instancia EC2 sea eliminada antes del volumen EBS.

    Resources:
      SasEbsVolume:
        Type: AWS::EC2::Volume
        DeletionPolicy: Snapshot
        Properties:
          ...
    
    SasInstance:
        Type: AWS::EC2::Instance
        DependsOn: SasEbsVolume
        Properties:
          ...
          Volumes:
            - Device: /dev/xvdd
              VolumeId: !Ref SasEbsVolume
    

Comments are closed.