この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、菊池です。
2017年2月のアップデートで、EBSボリュームサイズ/ボリュームタイプが動的に変更可能になりました。
- Amazon EBS Update – New Elastic Volumes Change Everything
- 【遂に来た!】EBS でボリュームサイズを変更できるようになりました(ボリュームタイプ変更も)
今回、4月28日のアップデートで、そのEBS Elastic VolumesがCloudFormationでもサポートされ、スタックアップデートで変更が可能になりました。
試してみた
早速試してみます。
今回のアップデートの対象は"Type":"AWS::EC2::Volume"
で指定したボリュームのみです。"Type" : "AWS::EC2::Instance"
の"BlockDeviceMappings"
で指定したリソースは対象外です。"AWS::EC2::Instance"
のボリュームサイズ/タイプを変更すると、リプレースとなりますのでご注意ください。
ボリュームの作成
まずは、CloudFormationテンプレートでEBSボリュームを作成しインスタンスにアタッチします。
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Description" : "EBS Elastic Volume Test",
"Resources" : {
"Volume" : {
"Type":"AWS::EC2::Volume",
"Properties" : {
"AvailabilityZone" : "ap-northeast-1a",
"Size" : 10,
"VolumeType" : "gp2"
}
},
"VolumeAttachment" : {
"Type":"AWS::EC2::VolumeAttachment",
"Properties" : {
"Device" : "/dev/sdf",
"InstanceId" : "i-xxxxxxxxxxxxxxxx",
"VolumeId" : { "Ref" : "Volume" }
}
}
}
}
インスタンスで確認すると、以下のようにxvdf:10GBで認識されています。
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 20G 0 disk
└─xvda1 202:1 0 20G 0 part /
xvdf 202:80 0 10G 0 disk
ボリュームサイズ変更
次に、ボリュームサイズを変更します。
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Description" : "EBS Elastic Volume Test",
"Resources" : {
"Volume" : {
"Type":"AWS::EC2::Volume",
"Properties" : {
"AvailabilityZone" : "ap-northeast-1a",
"Size" : 20,
"VolumeType" : "gp2"
}
},
"VolumeAttachment" : {
"Type":"AWS::EC2::VolumeAttachment",
"Properties" : {
"Device" : "/dev/sdf",
"InstanceId" : "i-xxxxxxxxxxxxxxx",
"VolumeId" : { "Ref" : "Volume" }
}
}
}
}
変更したテンプレートでスタックを更新します。
ボリュームが変更されます。
更新されました。
インスタンスも停止することなく、ディスクサイズが20GBに変更されています。
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 20G 0 disk
└─xvda1 202:1 0 20G 0 part /
xvdf 202:80 0 10G 0 disk
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 20G 0 disk
└─xvda1 202:1 0 20G 0 part /
xvdf 202:80 0 20G 0 disk
最後に
EBS Elastic VolumesがCloudFormationでサポートされたことで、を更新する運用をしている場合もこの機能を利用可能になりました。CloudFormationの適用範囲を広げることが可能になりますね。