angegeben ist, wir stoßen auf ein seltsames Problem mit AWS CloudFormation.AWS CloudFormation: update-stack schlägt fehl, wenn VolumeAttachment
Wir verwenden CloudFormation, um den Einsatz einiger unserer Maschinen zu automatisieren; Unser CloudFormation-YML beschreibt die Bereitstellung, die ein persistentes EBS-Volume enthält, das außerhalb des Stapels erstellt wurde, und wir möchten diesen Stack nicht entfernen oder neu erstellen (er enthält eine Menge des Status unserer Anwendung).
Die relevante Cloudformation yml Schnipsel sind:
DataVolumeAttachment01: Type: AWS::EC2::VolumeAttachment Properties: Device: "/dev/xvdm" InstanceId: !Ref EC2Instance01 VolumeId: !Ref DataVolumeId EC2Instance01: Type: "AWS::EC2::Instance" Properties: ImageId: "ami-6f587e1c" KeyName: !Ref "KeyName" InstanceType: !Ref "InstanceType" BlockDeviceMappings: # Root device - DeviceName: "/dev/sda1" Ebs: VolumeType: "gp2" DeleteOnTermination: "true" VolumeSize: 20
So, das Root-Gerät ist "transient" (jedes Mal, wenn der Stapel aktualisiert wird, wie Volumen gelöscht und wird mit Userdaten reprovisioned), während/dev/xvdm sollte unsere persistenten Daten enthalten; Ein solches Gerät wird am Ende der Benutzerdaten bereitgestellt und zu fstab hinzugefügt.
Nach AWS own documentation, ich ein Skript erstellt, das aus dem Inneren des VM solche Volumen unmounts, und ich habe sogar versucht, solche Volumen aus dem EC2 Instanz deattaching, so etwas wie:
${SSH_CMD} "cd /home/application && application stop && sudo umount /data && echo data volume unmounted" echo "detaching data volume" VOLID=$(aws ec2 describe-volumes --filters Name=tag-key,Values="Name" Name=tag-value,Values=persistent-volume --query 'Volumes[*].{ID:VolumeId}' --output text) aws ec2 detach-volume --volume-id "${VOLID}"
Ich habe das umount prüft und die Trennung gelingt.
Die Erstellung eines neuen Stacks mit meiner Vorlage und Parametern ist erfolgreich.
Und doch, wenn ich
aws cloudformation update-stack --capabilities CAPABILITY_IAM --stack-name $STACK_NAME --template-body file://single_ec2_instance.yml --parameters file://$AWS_PARAMETERS_FILE
starten Das Update fehlschlägt, mit diesem Fehler:
Update to resource type AWS::EC2::VolumeAttachment is not supported.
Auch wenn ich nicht innerhalb einer solchen Ressource etwas zu ändern bin.
Was ist los? Wie kann ich Probleme lösen oder umgehen?