Using block device mappings, you can directly attach Block Storage Unit (BSU) volumes to an instance at launch through the block device mapping of the OMI or create an OMI from a snapshot.

Block device mapping enables you to:

  • Define the device name (/dev/sdx) assigned to the BSU volume
  • Prevent a BSU volume defined by the OMI from being assigned to a device name
  • Specify whether a BSU volume is created from a snapshot or from scratch, and whether it is deleted or detached when terminating the instance

This feature is not available from Cockpit. This documentation only describes the procedure using AWS CLI.
  • To define a block device mapping, set the block-device-mappings attribute of the run-instances or register-image command following this syntax:

    Request sample
      {
        "DeviceName": "string",
        "Ebs": {
          "SnapshotId": "string",
          "VolumeSize": integer,
          "DeleteOnTermination": true or false,
          "VolumeType": "standard",
          "Iops": integer,
        },
        "NoDevice": "string"
      }

    You can set this attribute either inline (directly in the command), or via a text file (by specifying file://MAP_PATH, where MAP_PATH is the path to your block device mapping file).

    This attribute contains the following elements that you need to specify:

    • DeviceName: The device name assigned to the volume

      The device name for the root device must be /dev/sda1. For any other volume you must use the /dev/xvdX format. For more information, see About Volumes > Volumes Attachment and Device Names.

    • (optional) Ebs: Information to map a volume to DeviceName. This element requires the following information:
      • (optional) SnapshotId: The ID of a snapshot if you want to create a volume from it.
      • (optional) VolumeSize: The size of the volume to create, in gibibytes (GiB).

        - If you specify a snapshot ID, the volume size must be at least equal to the snapshot size.

        - If you specify a snapshot ID but no volume size, the volume is created with a size similar to the snapshot one.

      • (optional) DeleteOnTermination: By default or if set to true, the volume is deleted when terminating the instance. If false, the volume is not deleted when terminating the instance.
      • (optional) VolumeType: The type of volume (standard | gp2 | io1). For more information, see Volume Types and IOPS. By default, a standard volume is created.
      • (optional) Iops: The number of IOPS.


        The maximum number of IOPS allowed for io1 volumes is 13000.



        This parameter must be specified only if you create an io1 volume.

    • (optional) NoDevice: Prevents a volume from being mapped to DeviceName, if the OMI used contains a mapping for DeviceName.

      To use this parameter, specify any value other than null, for example an empty string ("").



    In the following example, the block device mappings:

    • Attach a volume created from the snap-123456789 snapshot, assigned to /dev/xvd
    • Attach an empty Magnetic volume with a size of 100 GiB, assigned to /dev/xvdc and that is deleted when terminating the instance
    • Prevent a volume defined by the OMI from being assigned to /dev/xvde at launch
    Block device mapping example
    [
       {
        "DeviceName": "/dev/xvdb",
        "Ebs": {
                "SnapshotId": "snap-123456789"
               }
        },
       {
        "DeviceName": "/dev/xvdc",
        "Ebs": {
                "VolumeSize": 100,
                "DeleteOnTermination": true
               }
        },
       {
        "DeviceName": "/dev/xvde", 
        "NoDevice": ""
       }
    ]


Corresponding API Methods