使用 EC2 Image Builder 将额外的 EBS 卷挂载到 AMI

问题描述

我正在使用 EC2 Image Builder Service 来构建黄金 AMI。

用例:

我想在实例中附加额外的 EBS 卷,我将在那里安装第三方组件并将所有内容存储在那里,而不是对我的根设备进行所有操作。此后,我想为其构建 AMI,因此我目前正在使用 EC2 Image Builder 服务。

问题陈述:

我想将额外的 EBS 卷安装到实例(正在构建 AMI)。为了实现这一点,我已经包含了 mounting 设备命令并将它们包含在自定义构建组件中。

name: DeployComponents
description: This is to deploycomponents.
schemaVersion: 1.0
phases:
  - name: build
    steps:
      - name: DeploymentStep
        action: ExecuteBash
        inputs:
          commands:
            - echo "Attaching Additional EBS Volume."
            - lsblk
            - sudo useradd -m abc -p abc
            - sudo groupadd cloud
            - sudo usermod -a -G cloud cloud
            - sudo umount -f /dev/sdb
            - sudo mkfs -t ext4 /dev/sdb
            - sudo mkdir /cloud
            - mount /dev/sdb /cloud
            - echo /dev/sdb /cloud ext4 defaults,nofail 0 2 >> /etc/fstab
            - sed -i 's+/opt/mount1+/cloud+' /etc/fstab
            - sudo chown -R cloud:cloud /cloud

还在配方中包含相同的设备,即/dev/sdb

当我查看 EC2 Image Builder 日志时,我看到了:

日志:

umount: /dev/sdb: mountpoint not found
mke2fs 1.42.9 (28-Dec-2013)
Could not stat /dev/sdb --- No such file or directory

The device apparently does not exist; did you specify it correctly?
mount: special device /dev/sdb does not exist
umount: /dev/sdb: mountpoint not found
mke2fs 1.42.9 (28-Dec-2013)
Could not stat /dev/sdb --- No such file or directory

The device apparently does not exist; did you specify it correctly?
mount: special device /dev/sdb does not exist

我错过了什么?

感谢任何帮助。

非常感谢。

解决方法

我发现了这个问题。

这是由于 naming convention 上的 AWS 设备

我在机器上运行了 lsblk 命令(将用于创建 AMI)并且输出是这样的

NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
nvme0n1     259:1    0  100G  0 disk 
└─nvme0n1p1 259:2    0  100G  0 part /
nvme1n1     259:0    0  100G  0 disk 

然后我发现 /dev/sdb 的命名约定是 /dev/nvme1n1

参考资料:

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nvme-ebs-volumes.html https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-using-volumes.html