{"id":195,"date":"2026-10-12T18:01:09","date_gmt":"2026-10-12T18:01:09","guid":{"rendered":"http:\/\/www.scmgalaxy.com\/tutorials\/2010\/03\/10\/cloud-tools-now-supports-amazon-elastic-block-store\/"},"modified":"2026-10-12T18:01:09","modified_gmt":"2026-10-12T18:01:09","slug":"cloud-tools-now-supports-amazon-elastic-block-store","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/cloud-tools-now-supports-amazon-elastic-block-store\/","title":{"rendered":"Cloud Tools Adds Amazon EBS Support: Durable EC2 Storage for Database Workloads"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Amazon Elastic Block Store (EBS) changed how teams ran stateful workloads on EC2, and this post captures the point when Cloud Tools added EBS-aware deployment options. If you run databases or other persistent services on EC2, this guide explains what was announced, why it mattered, and how the underlying workflow maps to practical operations.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Originally published on 2010-03-10; fully revised and updated.<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2010\/03\/amazon-elastic-block-store-.png\" alt=\"Amazon Elastic Block Store\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">What Cloud Tools added in this announcement<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">According to the original post, Cloud Tools added support for launching applications with database storage on Amazon EBS in multiple ways: a new volume, an existing volume, or a volume created from a snapshot. It also stated that running applications could be converted to use EBS and that EBS snapshots could be created for backups.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Cloud Tools option<\/th><th>What it enables<\/th><th>Typical use case<\/th><\/tr><\/thead><tbody><tr><td>Launch with a new EBS volume<\/td><td>Create fresh persistent block storage during deployment<\/td><td>New environment or first-time database setup<\/td><\/tr><tr><td>Launch with an existing EBS volume<\/td><td>Attach previously created storage<\/td><td>Reusing existing data between instance replacements<\/td><\/tr><tr><td>Launch with a volume from snapshot<\/td><td>Restore data into a new volume from backup<\/td><td>Recovery, cloning, or environment seeding<\/td><\/tr><tr><td>Convert a running app to EBS<\/td><td>Move an already running workload to persistent storage<\/td><td>Upgrading an initially ephemeral deployment<\/td><\/tr><tr><td>Create EBS snapshot of database volume<\/td><td>Capture point-in-time backup metadata stored by EBS snapshot service<\/td><td>Backup and restore workflows<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The post also noted a tooling limitation at the time: <strong>the Maven plugin supported this functionality first<\/strong>, while a Grails plugin update was planned.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why this mattered for EC2-hosted databases<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The original article highlights a common early EC2 challenge: data on instance-local filesystems disappeared when instances were terminated. EBS addressed that by letting storage live independently of a single instance lifecycle, with snapshot-based backup and restore patterns.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Storage model<\/th><th>Lifecycle behavior<\/th><th>Backup approach<\/th><th>Fit for database data<\/th><\/tr><\/thead><tbody><tr><td>Instance-local (ephemeral)<\/td><td>Tied to instance lifetime<\/td><td>External backup strategy required<\/td><td>Higher operational overhead for persistence<\/td><\/tr><tr><td>EBS volume<\/td><td>Persists independently of instance termination<\/td><td>EBS snapshots (stored by AWS snapshot infrastructure)<\/td><td>Better fit for long-lived state<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">EBS-backed deployment and recovery workflow<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cloud Tools automated parts of this process, but the core lifecycle can be summarized as follows:<\/p>\n\n\n\n<pre class=\"mermaid\">\nflowchart TD\n    A[Choose storage mode] --> B[Launch application instance]\n    B --> C[Attach EBS volume]\n    C --> D[Create or mount filesystem]\n    D --> E[Run database on mounted path]\n    E --> F[Create snapshot backup]\n    F --> G{Need restore}\n    G -- Yes --> H[Create volume from snapshot]\n    H --> I[Attach and mount restored volume]\n    G -- No --> J[Continue operations]\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Example commands for the same workflow<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The original post discusses Cloud Tools plugin support, not raw CLI usage. The commands below are a practical AWS CLI and Linux equivalent of the same EBS lifecycle.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Create and attach a new volume<\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs language-bash\">aws ec2 create-volume \\\n  --availability-zone us-east-1a \\\n  --size 20 \\\n  --volume-type gp3\n\naws ec2 attach-volume \\\n  --volume-id vol-0123456789abcdef0 \\\n  --instance-id i-0123456789abcdef0 \\\n  --device \/dev\/sdf<\/code><\/span><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Format and mount the attached volume<\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs language-bash\">lsblk\nsudo mkfs.ext4 \/dev\/xvdf\nsudo mkdir -p \/data\nsudo mount \/dev\/xvdf \/data<\/code><\/span><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Create a snapshot and restore to a new volume<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript language-bash\">aws ec2 create-snapshot \\\n  --volume-id vol<span class=\"hljs-number\">-0123456789<\/span>abcdef0 \\\n  --description <span class=\"hljs-string\">\"database backup\"<\/span>\n\naws ec2 create-volume \\\n  --availability-zone us-east<span class=\"hljs-number\">-1<\/span>a \\\n  --snapshot-id snap<span class=\"hljs-number\">-0123456789<\/span>abcdef0<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Original references<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Amazon Elastic Block Store (historical link from original post): <a href=\"http:\/\/www.amazon.com\/gp\/browse.html?node=3435361\">http:\/\/www.amazon.com\/gp\/browse.html?node=3435361<\/a><\/li><li>Cloud Tools project home page (historical Google Code link): <a href=\"http:\/\/code.google.com\/p\/cloudtools\/\">http:\/\/code.google.com\/p\/cloudtools\/<\/a><\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Best practices and common pitfalls<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Keep EBS volumes and EC2 instances in the same Availability Zone.<\/li><li>Document device naming conventions because Linux-visible names can differ from attachment names.<\/li><li>For database snapshots, coordinate application consistency before snapshot creation.<\/li><li>Test restore paths regularly; backup without restore testing is incomplete.<\/li><li>Treat the original plugin support note as historical context and validate current tooling choices before implementation.<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>This historical update covers when Cloud Tools introduced Amazon EBS support for EC2 applications, including database-backed deployments. It explains the supported storage modes, the backup\/restore flow, and practical command-level equivalents.<\/p>\n","protected":false},"author":1,"featured_media":4121,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[5633],"tags":[3400,3403,3354,3398,3397,531,646,3362,3402,3396,3401,3399,346],"class_list":["post-195","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-aws","tag-amazon-ebs","tag-amazon-ebs-snapshot","tag-amazon-ec2","tag-amazon-ec2-new-features","tag-amazon-elastic-block-store","tag-cloud","tag-cloud-computing","tag-cloud-tools","tag-cloud-tools-supports-amazon-ebs","tag-elastic-block-store","tag-grails-plugin","tag-supports","tag-updates"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/195","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=195"}],"version-history":[{"count":4,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/195\/revisions"}],"predecessor-version":[{"id":79025,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/195\/revisions\/79025"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media\/4121"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=195"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=195"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=195"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}