AWS CloudFormation:如果VolumeAttachment指定了

时间:2017-02-27 16:38:52

标签: amazon-web-services amazon-ec2 amazon-ebs amazon-cloudformation

我们遇到了AWS CloudFormation的一个奇怪问题。

我们正在使用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

因此,根设备是"瞬态" (每次更新堆栈时,此类卷将被删除并使用userdata重新配置),而/ dev / xvdm应包含我们的持久数据;这样的设备安装在userdata的末尾,并添加到fstab。

AWS own documentation之后,我创建了一个从VM内部卸载此类卷的脚本,我甚至尝试从EC2实例中取消这样的卷,例如:

${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}"

我已经验证了umount和分离成功。

使用我的模板和参数创建新堆栈成功。

但是,当我启动时

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.

即使我没有在这样的资源中改变任何东西。

什么了?我该如何解决或解决?

1 个答案:

答案 0 :(得分:0)

似乎事情没有问题。

CloudFormation受到耗尽的t2 cpu信用(我们已经用尽,我们试图为了使用m3或m4而尝试更改实例类型)的影响,或者我们在爱尔兰的EC2 / CloudFormation度过了糟糕的一天。今天,使用完全相同的设置,每次更新都会成功。