EBSをEC2にアタッチしたい
アタッチしたはずのEBSがアタッチされてない。なぜ。
CloudFormationを見直してみた
修正前
Type: AWS::EC2::Instance
Metadata:
AWS::CloudFormation::Init:
configSets:
mountebs:
- "01_set_ebs_volume"
- "02_mount_ebs_volume"
01_set_ebs_volume:
commands:
01mkdir_data:
command: "mkdir /data"
02mkfs:
command: "mkfs -t ext4 /dev/xvdf"
03vi_fstab:
command: "echo \"/dev/xvdf /data ext4 defaults,discard 0 0\" >> /etc/fstab"
02_mount_ebs_volume:
commands:
01mount_ebs:
command: "mount -a"
あやしそうなのはmkfs -t ext4 /dev/xvdf
かなと思いドキュメントを確認してみました。
EBS ボリュームは、Nitro システム上に構築されたインスタンスで NVMe ブロックデバイスとして公開されます。デバイス名は、/dev/nvme0n1、/dev/nvme1n1 などです。ブロックデバイスマッピングで指定したデバイス名は、NVMe デバイス名 (/dev/nvme[0-26]n1) を使用して名称変更されます。
▶ Linux インスタンスの Amazon EBS および NVMe - Amazon Elastic Compute Cloud
なるほど。
以下のインスタンスが Nitro System に基づいています。
仮想化: A1、C5、C5a、C5ad、C5d、C5n、C6g、C6gd、G4、I3en、Inf1、M5、M5a、M5ad、M5d、M5dn、M5n、M6g、M6gd、p3dn.24xlarge、R5、R5a、R5ad、R5d、R5dn、R5n、R6g、R6gd、T3、T3a、z1d
▶ インスタンスタイプ - Amazon Elastic Compute Cloud
なるほど。なるほど。
修正後
Type: AWS::EC2::Instance
Metadata:
AWS::CloudFormation::Init:
configSets:
mountebs:
- "01_set_ebs_volume"
- "02_mount_ebs_volume"
01_set_ebs_volume:
commands:
01mkdir_data:
command: "mkdir /data"
02mkfs:
command: "mkfs -t ext4 /dev/nvme1n1"
03vi_fstab:
command: "echo \"/dev/nvme1n1 /data ext4 defaults,discard 0 0\" >> /etc/fstab"
02_mount_ebs_volume:
commands:
01mount_ebs:
command: "mount -a"
ドキュメントにある通り/dev/xvdf
を/dev/nvme1n1
に変更したところアタッチできました。
ドキュメントはちゃんと読まないとダメですね、、