0

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.

即使我不會改變這樣的資源中任何東西。

這是怎麼回事?我該如何解決或解決問題?

回答

0

這似乎是一個沒有問題的東西。

CloudFormation受用盡t2 cpu信用(我們已經用盡,我們試圖改變實例類型,以便使用m3或m4的確切原因),或者我們在EC2/CloudFormation中遇到了糟糕的一天愛爾蘭。今天,以相同的確切設置,每次更新都成功了。