AWS CloudFormation:更新堆棧失敗,那麼我們遇到了AWS CloudFormation的一個奇怪問題。如果VolumeAttachment指定
我們使用CloudFormation來自動部署我們的一些機器;我們的CloudFormation yml描述了部署,其中包含一個在堆棧外創建的持久EBS卷,我們不希望沿着這樣的堆棧移除或重新創建(它包含我們應用程序的很多狀態)。
相關CloudFormation YML片段是:
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
所以,根設備是「瞬時」(每堆棧被更新時,這樣的體積被刪除,並且獲取與用戶數據重置的),而/ dev/xvdm應該包含我們的持久數據;這樣的設備被掛載在用戶數據的末尾,並被添加到fstab中。
繼AWS own documentation,我創建了卸載從虛擬機內部,體積的腳本,我甚至試圖從EC2實例deattaching這樣的量,是這樣的:
${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}"
我已經驗證了卸除和分離成功。
使用我的模板和參數創建新堆棧成功。
然而,當我啓動
aws cloudformation update-stack --capabilities CAPABILITY_IAM --stack-name $STACK_NAME --template-body file://single_ec2_instance.yml --parameters file://$AWS_PARAMETERS_FILE
更新失敗,此錯誤:
Update to resource type AWS::EC2::VolumeAttachment is not supported.
即使我不會改變這樣的資源中任何東西。
這是怎麼回事?我該如何解決或解決問題?