{"id":10195,"date":"2016-06-06T19:29:31","date_gmt":"2016-06-06T17:29:31","guid":{"rendered":"https:\/\/blog.zhaw.ch\/icclab\/?p=10195"},"modified":"2019-08-05T14:35:27","modified_gmt":"2019-08-05T12:35:27","slug":"walk-through-importing-virtual-machine-images-into-ec2","status":"publish","type":"post","link":"https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/","title":{"rendered":"Walk-through: Importing virtual machine images into EC2"},"content":{"rendered":"\n<p>by <a href=\"https:\/\/blog.zhaw.ch\/icclab\/josef-spillner\/\">Josef Spillner<\/a><\/p>\n\n\n<p>The <a href=\"http:\/\/aws.amazon.com\/ec2\/\">Elastic Compute Cloud (EC2)<\/a> offered by AWS as public commercial service has been one of the first and probably the seminal service for the research on cloud applications and infrastructure. From an application perspective, hosting in EC2 means wrapping the application into one of the provided virtual machine (VM) images and instantiating it in sufficient numbers (e.g. with <a href=\"http:\/\/aws.amazon.com\/autoscaling\/\">autoscaling<\/a>). Ultimately, for custom applications, it also possible to <a href=\"http:\/\/docs.aws.amazon.com\/AWSEC2\/latest\/UserGuide\/UsingImportImage.html\">import custom VM images<\/a>. This involves creating the machine image, testing it on a local hypervisor (KVM, Xen, VirtualBox, &#8230;) or in a local cloud stack (OpenStack, CloudStack, OpenNebula, &#8230;), then copying the image into the <a href=\"http:\/\/aws.amazon.com\/s3\/\">Simple Storage Service (S3)<\/a> (in a <a href=\"https:\/\/blog.zhaw.ch\/icclab\/making-tools-robust-and-breaking-robust-tools\/\">reliable manner<\/a>), initiating the import process, and waiting for the VM image called <a href=\"http:\/\/docs.aws.amazon.com\/general\/latest\/gr\/glos-chap.html#AmazonMachineImage\">Amazon Machine Image (AMI)<\/a> to become available. This import process is not well-documented and regularly causes high effort with application providers. Hence, this blog post offers a detailed walk-through and points out common pitfalls.<\/p>\n<p><!--more-->The first step towards explaining the EC2 import process is to represent it as abstract state machine with transitions. According to the <a href=\"http:\/\/docs.aws.amazon.com\/AWSEC2\/latest\/UserGuide\/import-status-ImportImage.html\">states documentation<\/a>, there would be four states: active, deleting, deleted, completed. However, by experimental use of the service, logging the (sub-)state every second, and extracting the timed state transitions, we found out that at least 12 distinct states exist. These are:<\/p>\n<ul>\n<li>pending<\/li>\n<li>validating \/ validated<\/li>\n<li>converting<\/li>\n<li>updating \/ updated<\/li>\n<li>preparing to boot<\/li>\n<li>booting \/ booted<\/li>\n<li>preparing ami<\/li>\n<li>completed<\/li>\n<li>deleting \/ deleted<\/li>\n<li>a few more which are probably not by design, as shown below<\/li>\n<\/ul>\n<p>The transitions can be divided into success, failure and endless loops. In the following figure, which represents measurements with a typical small image file of about 500 MiB, success is measured by a north-bound transition, failure by a south-bound one, and an endless loop by an east-bound one.<\/p>\n<figure id=\"attachment_10196\" aria-describedby=\"caption-attachment-10196\" style=\"width: 584px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/ec2importtime.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-10196 size-large\" src=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/ec2importtime-1024x748.png\" alt=\"ec2importtime\" width=\"584\" height=\"427\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/ec2importtime-1024x748.png 1024w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/ec2importtime-300x219.png 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/ec2importtime-768x561.png 768w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/ec2importtime-411x300.png 411w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/ec2importtime.png 1428w\" sizes=\"auto, (max-width: 584px) 100vw, 584px\" \/><\/a><figcaption id=\"caption-attachment-10196\" class=\"wp-caption-text\">Timed state transitions of a virtual machine imported into AWS EC2.<\/figcaption><\/figure>\n<p>Some of the values are hard-coded estimations. The estimation for converting is clearly too conservative; using a value of 20 instead of 28 would be more appropriate. Using the command-line tool<\/p>\n<pre>aws ec2 describe-import-image-tasks<\/pre>\n<p>the failures manifest as follows in human-readable text format:<\/p>\n<pre>IMPORTIMAGETASKS&nbsp; MyVM&nbsp; import-ami-xxxxxxxx&nbsp; deleted&nbsp; ClientError: Unknown OS \/ Missing OS files.\nIMPORTIMAGETASKS&nbsp; MyVM&nbsp; import-ami-xxxxxxxx&nbsp; deleted&nbsp; ClientError: No valid partitions. Not a valid volume.\nIMPORTIMAGETASKS&nbsp; MyVM&nbsp; import-ami-xxxxxxxx&nbsp; deleted&nbsp; ClientError: Unsupported kernel version 3.16.0-4-686-pae\nIMPORTIMAGETASKS&nbsp; MyVM&nbsp; import-ami-xxxxxxxx&nbsp; deleted&nbsp; ClientError: Disk validation failed [Unsupported OVA format]\nIMPORTIMAGETASKS&nbsp; MyVM&nbsp; import-ami-xxxxxxxx&nbsp; active&nbsp; ServerError: an internal error has occurred during conversion.\nIMPORTIMAGETASKS&nbsp; MyVM&nbsp; import-ami-xxxxxxxx&nbsp; active&nbsp; booting [endless]<\/pre>\n<p>Most failures are deterministic, either caused by issues already present in the VM image (e.g. non-bootable images) or caused by limitations of EC2&#8217;s hypervisor setup (using Xen and PV-Grub) compared to local hypervisors. Some failures can be assumed to be implementation bugs within EC2. In particular, endless loops should never happen, and failure sources should be identified more clearly so that internal errors are not propagated to EC2 clients. This means that despite being assumed to be one of the <a href=\"http:\/\/blog.b3k.us\/2009\/01\/25\/ec2-origins.html\">most seasoned<\/a> and reliable cloud computing services, EC2 still suffers from unnecessary limitations and runtime bugs. The categorisation of decisions to be taken by the application developer (more appropriately, packager) which triggers the associated limitations and faults is shown in the following table. It takes into account the image format (raw disk file with or without partitions, VDI, VMDK wrapped into OVA) and the early boot stages: bootloader, init process. It omits later stages including the network setup and eventual connectivity to services exposed by the VM instance.<\/p>\n<p><a href=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/ec2decisions-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-10201 size-large\" src=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/ec2decisions-1-832x1024.png\" width=\"584\" height=\"719\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/ec2decisions-1-832x1024.png 832w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/ec2decisions-1-244x300.png 244w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/ec2decisions-1-768x946.png 768w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/ec2decisions-1.png 1400w\" sizes=\"auto, (max-width: 584px) 100vw, 584px\" \/><\/a><\/p>\n<p>The <em>odgxr<\/em> combination corresponds to a stock Debian VM installation which is known to work well with the import service. The derived recommendation for VM images is therefore to build them with the Grub boot loader and its configuration, using a partitioned disk with at least one partition, and an appropriate 64-bit Xen-enabled kernel booting with initrd. Yet, when building a minimal image from scratch using this combination of configuration choices, it still results in the ominous <em>Unknown OS \/ Missing OS files<\/em> error message, which is not very helpful without further details. There are small differences between the images which need further investigation. Looking into the trend of massively booting tiny instances, a design which would support small pieces in all aspects (e.g. using <a href=\"https:\/\/gitorious.org\/recvirt\/recvirt.git\/\">recvirt<\/a> minimal kernels with recursively nested virtualisation support, extlinux as bootloader and partitionless boots with just initrd) would be a helpful innovation to let users experiment with the most recent microservice designs, including the recently proposed <a href=\"http:\/\/lwn.net\/Articles\/644675\/\">clear containers<\/a> concept.<\/p>\n<p>We make our preliminary findings available as preliminary analysis of EC2 without rating the service compared to others, but we will also analyse other compute services in the future and report about them. This will help cloud providers to streamline the onboarding process with improved tools, and application developers to migrate into the cloud with less effort. As usual, our experiment setup is publicly available through a <a href=\"https:\/\/github.com\/serviceprototypinglab\/aws-cli-experiments\/tree\/master\/aws-ec2\">Git repository<\/a> maintained by the Service Prototyping Lab.<\/p><div class=\"pt-sm\">Schlagw\u00f6rter: <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/aws\/\">AWS<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/experiment\/\">experiment<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/splab\/\">splab<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/tooling\/\">tooling<\/a><br><\/div>","protected":false},"excerpt":{"rendered":"<p>The Elastic Compute Cloud (EC2) offered by AWS as public commercial service has been one of the first and probably the seminal service for the research on cloud applications and infrastructure. From an application perspective, hosting in EC2 means wrapping the application into one of the provided virtual machine (VM) images and instantiating it in [&hellip;]<\/p>\n","protected":false},"author":486,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[1],"tags":[594,778,769,777],"features":[],"class_list":["post-10195","post","type-post","status-publish","format-standard","hentry","category-allgemein","tag-aws","tag-experiment","tag-splab","tag-tooling"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Walk-through: Importing virtual machine images into EC2 - Service Engineering (ICCLab &amp; SPLab)<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Walk-through: Importing virtual machine images into EC2\" \/>\n<meta property=\"og:description\" content=\"The Elastic Compute Cloud (EC2) offered by AWS as public commercial service has been one of the first and probably the seminal service for the research on cloud applications and infrastructure. From an application perspective, hosting in EC2 means wrapping the application into one of the provided virtual machine (VM) images and instantiating it in [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/\" \/>\n<meta property=\"og:site_name\" content=\"Service Engineering (ICCLab &amp; SPLab)\" \/>\n<meta property=\"article:published_time\" content=\"2016-06-06T17:29:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-08-05T12:35:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/ec2importtime-1024x748.png\" \/>\n<meta name=\"author\" content=\"icclab\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"icclab\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/\"},\"author\":{\"name\":\"icclab\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/045c6bde7e681e689e4fc051d8932563\"},\"headline\":\"Walk-through: Importing virtual machine images into EC2\",\"datePublished\":\"2016-06-06T17:29:31+00:00\",\"dateModified\":\"2019-08-05T12:35:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/\"},\"wordCount\":766,\"commentCount\":5,\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/ec2importtime-1024x748.png\",\"keywords\":[\"AWS\",\"experiment\",\"splab\",\"tooling\"],\"articleSection\":[\"*.*\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/\",\"name\":\"Walk-through: Importing virtual machine images into EC2 - Service Engineering (ICCLab &amp; SPLab)\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/ec2importtime-1024x748.png\",\"datePublished\":\"2016-06-06T17:29:31+00:00\",\"dateModified\":\"2019-08-05T12:35:27+00:00\",\"author\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/045c6bde7e681e689e4fc051d8932563\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/#primaryimage\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/ec2importtime.png\",\"contentUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/ec2importtime.png\",\"width\":1428,\"height\":1043},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/blog.zhaw.ch\/icclab\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Walk-through: Importing virtual machine images into EC2\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#website\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/\",\"name\":\"Service Engineering (ICCLab &amp; SPLab)\",\"description\":\"A Blog of the ZHAW Zurich University of Applied Sciences\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.zhaw.ch\/icclab\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/045c6bde7e681e689e4fc051d8932563\",\"name\":\"icclab\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g\",\"caption\":\"icclab\"},\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/author\/icclab\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Walk-through: Importing virtual machine images into EC2 - Service Engineering (ICCLab &amp; SPLab)","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/","og_locale":"en_US","og_type":"article","og_title":"Walk-through: Importing virtual machine images into EC2","og_description":"The Elastic Compute Cloud (EC2) offered by AWS as public commercial service has been one of the first and probably the seminal service for the research on cloud applications and infrastructure. From an application perspective, hosting in EC2 means wrapping the application into one of the provided virtual machine (VM) images and instantiating it in [&hellip;]","og_url":"https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/","og_site_name":"Service Engineering (ICCLab &amp; SPLab)","article_published_time":"2016-06-06T17:29:31+00:00","article_modified_time":"2019-08-05T12:35:27+00:00","og_image":[{"url":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/ec2importtime-1024x748.png","type":"","width":"","height":""}],"author":"icclab","twitter_card":"summary_large_image","twitter_misc":{"Written by":"icclab","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/#article","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/"},"author":{"name":"icclab","@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/045c6bde7e681e689e4fc051d8932563"},"headline":"Walk-through: Importing virtual machine images into EC2","datePublished":"2016-06-06T17:29:31+00:00","dateModified":"2019-08-05T12:35:27+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/"},"wordCount":766,"commentCount":5,"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/ec2importtime-1024x748.png","keywords":["AWS","experiment","splab","tooling"],"articleSection":["*.*"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/","url":"https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/","name":"Walk-through: Importing virtual machine images into EC2 - Service Engineering (ICCLab &amp; SPLab)","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/#primaryimage"},"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/ec2importtime-1024x748.png","datePublished":"2016-06-06T17:29:31+00:00","dateModified":"2019-08-05T12:35:27+00:00","author":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/045c6bde7e681e689e4fc051d8932563"},"breadcrumb":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/#primaryimage","url":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/ec2importtime.png","contentUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/06\/ec2importtime.png","width":1428,"height":1043},{"@type":"BreadcrumbList","@id":"https:\/\/blog.zhaw.ch\/icclab\/walk-through-importing-virtual-machine-images-into-ec2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/blog.zhaw.ch\/icclab\/"},{"@type":"ListItem","position":2,"name":"Walk-through: Importing virtual machine images into EC2"}]},{"@type":"WebSite","@id":"https:\/\/blog.zhaw.ch\/icclab\/#website","url":"https:\/\/blog.zhaw.ch\/icclab\/","name":"Service Engineering (ICCLab &amp; SPLab)","description":"A Blog of the ZHAW Zurich University of Applied Sciences","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.zhaw.ch\/icclab\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/045c6bde7e681e689e4fc051d8932563","name":"icclab","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g","caption":"icclab"},"url":"https:\/\/blog.zhaw.ch\/icclab\/author\/icclab\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/10195","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/users\/486"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/comments?post=10195"}],"version-history":[{"count":5,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/10195\/revisions"}],"predecessor-version":[{"id":12511,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/10195\/revisions\/12511"}],"wp:attachment":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/media?parent=10195"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/categories?post=10195"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/tags?post=10195"},{"taxonomy":"features","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/features?post=10195"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}