[新機能] CloudFormationでEBS Elastic Volumesがサポートされました

2017.04.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、菊池です。

2017年2月のアップデートで、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" }
      }
    }
  }
}

ebs-md-001

インスタンスで確認すると、以下のように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" }
      }
    }
  }
}

変更したテンプレートでスタックを更新します。

ebs-md-002

ボリュームが変更されます。

ebs-md-003

更新されました。

ebs-md-004

インスタンスも停止することなく、ディスクサイズが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の適用範囲を広げることが可能になりますね。