Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

aws ec2 import-image doesn't honour the DeviceName in the disk-container file #8808

Closed
baelen-git opened this issue Jul 22, 2024 · 3 comments
Assignees
Labels
closing-soon This issue will automatically close in 4 days unless further comments are made. ec2 service-api This issue is due to a problem in a service API, not the SDK implementation.

Comments

@baelen-git
Copy link

Describe the bug

this is the container file I use

[
  {
    "Description": "Intersight Appliance Disk 1",
    "DeviceName": "/dev/sda",
    "Format": "raw",
    "UserBucket": {
        "S3Bucket": "parimi-poc",
        "S3Key": "intersight-appliance-installer-kvm-debug-1.1.0-0.aws.2-1.raw"
    }
  },
  {
    "Description": "Intersight Appliance Disk 2",
    "DeviceName": "/dev/sdb",
    "Format": "raw",
    "UserBucket": {
        "S3Bucket": "parimi-poc",
        "S3Key": "intersight-appliance-installer-kvm-debug-1.1.0-0.aws.2-2.raw"
    }
  },
  {
    "Description": "Intersight Appliance Disk 3",
    "DeviceName": "/dev/sdc",
    "Format": "raw",
    "UserBucket": {
        "S3Bucket": "parimi-poc",
        "S3Key": "intersight-appliance-installer-kvm-debug-1.1.0-0.aws.2-3.raw"
    }
  }

But when I import this with

aws ec2 import-image --description "Intersight Virtual Appliannce 1.1.0-0" --disk-containers "file://containers-raw.json" --platform "Linux"

When the job is finished it shows me this

{
    "ImportImageTasks": [
        {
            "Architecture": "x86_64",
            "Description": "Intersight Virtual Appliannce 1.1.0-0",
            "ImageId": "ami-07d5176d770421bf5",
            "ImportTaskId": "import-ami-03968908552892c3f",
            "LicenseType": "BYOL",
            "Platform": "Linux",
            "SnapshotDetails": [
                {
                    "Description": "Intersight Appliance Disk 1",
                    "DeviceName": "/dev/sda1",
                    "DiskImageSize": 51539607552.0,
                    "Format": "RAW",
                    "SnapshotId": "snap-0573ba92a635d15f3",
                    "Status": "completed",
                    "UserBucket": {
                        "S3Bucket": "parimi-poc",
                        "S3Key": "intersight-appliance-installer-kvm-debug-1.1.0-0.aws.2-1.raw"
                    }
                },
                {
                    "Description": "Intersight Appliance Disk 2",
                    "DeviceName": "/dev/sdf",
                    "DiskImageSize": 26843545600.0,
                    "Format": "RAW",
                    "SnapshotId": "snap-02b1dc3841bc60a87",
                    "Status": "completed",
                    "UserBucket": {
                        "S3Bucket": "parimi-poc",
                        "S3Key": "intersight-appliance-installer-kvm-debug-1.1.0-0.aws.2-2.raw"
                    }
                },
                {
                    "Description": "Intersight Appliance Disk 3",
                    "DeviceName": "/dev/sdg",
                    "DiskImageSize": 139586437120.0,
                    "Format": "RAW",
                    "SnapshotId": "snap-09f0450527dbbce3f",
                    "Status": "completed",
                    "UserBucket": {
                        "S3Bucket": "parimi-poc",
                        "S3Key": "intersight-appliance-installer-kvm-debug-1.1.0-0.aws.2-3.raw"
                    }
                }
            ],
            "Status": "completed",
            "Tags": [],
            "BootMode": "uefi"
        }
    ]
}

As you can see the DeviceName has been changed from:

/dev/sdb to /dev/sdf
/dev/sdc to /dev/sdg

Why is that?

Expected Behavior

I would expect the import command to use the DeviceNames which are specified in the container file

Current Behavior

currently it selects different device names

Reproduction Steps

See the container file in the description and the command to import it

Possible Solution

No response

Additional Information/Context

No response

CLI version used

aws-cli/2.17.14 Python/3.11.9 Linux/6.8.0-1009-aws exe/x86_64.ubuntu.24

Environment details (OS name and version, etc.)

ubuntu@ip-172-31-33-158:~$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=24.04 DISTRIB_CODENAME=noble DISTRIB_DESCRIPTION="Ubuntu 24.04 LTS"

@baelen-git baelen-git added bug This issue is a bug. needs-triage This issue or PR still needs to be triaged. labels Jul 22, 2024
@tim-finnigan tim-finnigan self-assigned this Jul 22, 2024
@tim-finnigan tim-finnigan added the investigating This issue is being investigated and/or work is in progress to resolve the issue. label Jul 22, 2024
@tim-finnigan
Copy link
Contributor

Thanks for reaching out. The import-image command involves a call to the EC2 ImportImage API. Therefore this behavior is happening on the API side rather than directly via the CLI.

This appears to be expected behavior based on this documentation: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/device_naming.html

(Linux instances) Depending on the block device driver of the kernel, the device could be attached with a different name than you specified. For example, if you specify a device name of /dev/sdh, your device could be renamed /dev/xvdh or /dev/hdh. In most cases, the trailing letter remains the same. In some versions of Red Hat Enterprise Linux (and its variants, such as CentOS), the trailing letter could change (/dev/sda could become /dev/xvde). In these cases, the trailing letter of each device name is incremented the same number of times. For example, if /dev/sdb is renamed /dev/xvdf, then /dev/sdc is renamed /dev/xvdg. Amazon Linux creates a symbolic link for the name you specified to the renamed device. Other operating systems could behave differently.

This could maybe be clearer in the documentation — I recommend using the Provide feedback link at the bottom of the API documentation page if you want to share any specific feedback on this, and any documentation updates would automatically get reflected in the CLI command docs.

@tim-finnigan tim-finnigan added closing-soon This issue will automatically close in 4 days unless further comments are made. service-api This issue is due to a problem in a service API, not the SDK implementation. ec2 and removed bug This issue is a bug. investigating This issue is being investigated and/or work is in progress to resolve the issue. needs-triage This issue or PR still needs to be triaged. labels Jul 22, 2024
@baelen-git
Copy link
Author

Thank you @tim-finnigan your answer makes sense and I will modify my bootstrap scripts as needed

Copy link

This issue is now closed. Comments on closed issues are hard for our team to see.
If you need more assistance, please open a new issue that references this one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
closing-soon This issue will automatically close in 4 days unless further comments are made. ec2 service-api This issue is due to a problem in a service API, not the SDK implementation.
Projects
None yet
Development

No branches or pull requests

2 participants