Welcome!

You will be redirected in 30 seconds or close now.

ColdFusion Authors: Yakov Fain, Jeremy Geelan, Maureen O'Gara, Nancy Y. Nee, Tad Anderson

Related Topics: ColdFusion

ColdFusion: Article

Rock Solid Storage via Web Services

Storage and bandwidth: the two hardest things to scale up as an application grows

Storage and bandwidth - these have traditionally been the two hardest things to scale up as an application grows. Many a dot-com million has been spent building out rock solid storage infrastructures, sometimes for applications which never saw the light of day. Fast forward to 2006. These are good times for developers, with open source technologies, open APIs, and low-cost, commoditized services to help the little guys play along with the big boys.

If you've struggled with adding storage to your application, Amazon's new Simple Storage Service may be just what you're looking for. Amazon S3, as it is commonly known, provides developers with access to the same rock solid, enterprise-class storage that Amazon uses for its own network of sites - all at a low cost with no minimum usage amounts.

Amazon has always tried to define itself as being more than just a bookstore. It was one of the first companies to embrace web services and to create a community around these developers. The launch of S3 has taken this even further. It's now possible to launch your app without worrying about what happens when you wind up with the next big Web 2.0 phenomenon.

Some of the features of S3 are:

  • It allows you to read, write and delete an unlimited number of objects from 1 byte to 5gb each
  • You pay only for what you use - $0.15 per GB-Month of storage and $0.20 per GB of data transferred
  • It uses standards-based REST (Representational State Transfer) and SOAP interfaces
  • Objects can be made public or private, and links can be set to expire
  • It is scalable, reliable and fast
The S3 web services are made available as either SOAP or REST-based web services. SOAP was the first web services technology to gain acceptance, but REST has quickly caught up due to the simple interface it provides using standard HTTP requests. REST does not suffer from the additional messaging layer and overhead that SOAP needs, and it is generally more lightweight and easier to work with. We're going to use the REST interface for all of our methods, using the CFHTTP tag and subsequently parsing the XML that is returned.

The following operations make up the core of the S3 service:

  • List all buckets for user
  • Put a new bucket
  • Get contents of a bucket
  • Delete a bucket
  • Put a new object
  • Get an object
  • Delete an object
Some of the things to keep in mind about working with the S3 service:
  • Accounts are limited to 100 buckets each and bucket names must be unique across all users
  • Buckets cannot contain other buckets, only objects
  • The number of objects within a bucket is unlimited
Detailing each method is outside the scope of this article, but we'll look at a sample REST request to give you an idea of how things work. You should be able to take it from there.

One of the keys to interacting with the S3 service is the signature that is required to be sent with each request. This is created by using a hash of your Amazon secret access key combined with the HTTP request string for the action being performed. To create the necessary signature, you'll need the <CF_HMAC> custom tag created by Tim McCarthy, which can be downloaded from the Adobe Developer Exchange at http://tinyurl.com/jhn9b.

The code to create a new bucket can be found in Listing 1.

CF7 includes all the other tags you'll need, but, on CF6, a Hex2Bin function is necessary which you can find at http://tinyurl.com/knx22. With CF6, you should change line 17 to read:

<cfset signature = ToBase64(Hex2Bin("#digest#"))>

The signature gets created on line 14, which generates a hash of the canonical string being sent to the web server using the secretAccessKey provided by Amazon as the encryption key. Once the signature is created, we submit the REST request via <cfhttp> on lines 20-24, and pass the appropriate <cfhttpparam> fields into the header of the request. The results are returned as standard XML. The main difference between the various S3 methods lies in the canonical string that gets sent along with the header variables passed in. Amazon provides raw HTTP samples in their Developer Resources which can help with forming the necessary HTTP requests. The raw HTTP request for putting a bucket is found in Listing 2.

Rather than have everyone reinvent the wheel, I created a CFC wrapper to the S3 service which handles all of the basics of adding and deleting buckets and objects. You can download the S3 CFC, which contains a sample application for interacting with the service, from the projects page on my blog at www.ajaxcf.com.

Keep in mind that this is a new service just launched by Amazon in March 2006. It is still evolving and more functionality will be added in the future. To find out more about Amazon S3 and to create a web services account to get started, visit the S3 homepage at http://aws.amazon.com/s3/. There are some alternatives on the horizon from OmniDrive, Streamload, and Box.net, which may suit your needs as well.

More Stories By Joe Danziger

Joe Danziger is a senior web applications developer with Multimax, Inc., a provider of Enterprise IT Services and Solutions supporting the critical missions of the Air Force, Army, Navy, and other Department of Defense components. He is certified as an Advanced Macromedia ColdFusion MX Developer, and also maintains the Building Blocks site (www.ajaxcf.com) dedicated to AJAX and ColdFusion, as well as DJ Central (www.djcentral.com), a Website serving DJs and the electronic dance music industry.

Comments (1) View Comments

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


Most Recent Comments
Yaniv Golan 11/08/06 03:26:13 AM EST

> The launch of S3 has taken this even
> further.

Daniel Cohen of the Gemini Israel Funds noted that he would not invest in any company that bases its strategy on the Amazon S3 storage services, since in his opinion it takes the economics away. This is interesting, it goes against my instinct and what I would recommend to people debating this decision. I'd love to see his math.

IoT & Smart Cities Stories
The challenges of aggregating data from consumer-oriented devices, such as wearable technologies and smart thermostats, are fairly well-understood. However, there are a new set of challenges for IoT devices that generate megabytes or gigabytes of data per second. Certainly, the infrastructure will have to change, as those volumes of data will likely overwhelm the available bandwidth for aggregating the data into a central repository. Ochandarena discusses a whole new way to think about your next...
CloudEXPO | DevOpsSUMMIT | DXWorldEXPO are the world's most influential, independent events where Cloud Computing was coined and where technology buyers and vendors meet to experience and discuss the big picture of Digital Transformation and all of the strategies, tactics, and tools they need to realize their goals. Sponsors of DXWorldEXPO | CloudEXPO benefit from unmatched branding, profile building and lead generation opportunities.
All in Mobile is a place where we continually maximize their impact by fostering understanding, empathy, insights, creativity and joy. They believe that a truly useful and desirable mobile app doesn't need the brightest idea or the most advanced technology. A great product begins with understanding people. It's easy to think that customers will love your app, but can you justify it? They make sure your final app is something that users truly want and need. The only way to do this is by ...
Digital Transformation and Disruption, Amazon Style - What You Can Learn. Chris Kocher is a co-founder of Grey Heron, a management and strategic marketing consulting firm. He has 25+ years in both strategic and hands-on operating experience helping executives and investors build revenues and shareholder value. He has consulted with over 130 companies on innovating with new business models, product strategies and monetization. Chris has held management positions at HP and Symantec in addition to ...
DXWorldEXPO LLC announced today that Big Data Federation to Exhibit at the 22nd International CloudEXPO, colocated with DevOpsSUMMIT and DXWorldEXPO, November 12-13, 2018 in New York City. Big Data Federation, Inc. develops and applies artificial intelligence to predict financial and economic events that matter. The company uncovers patterns and precise drivers of performance and outcomes with the aid of machine-learning algorithms, big data, and fundamental analysis. Their products are deployed...
Dynatrace is an application performance management software company with products for the information technology departments and digital business owners of medium and large businesses. Building the Future of Monitoring with Artificial Intelligence. Today we can collect lots and lots of performance data. We build beautiful dashboards and even have fancy query languages to access and transform the data. Still performance data is a secret language only a couple of people understand. The more busine...
Cell networks have the advantage of long-range communications, reaching an estimated 90% of the world. But cell networks such as 2G, 3G and LTE consume lots of power and were designed for connecting people. They are not optimized for low- or battery-powered devices or for IoT applications with infrequently transmitted data. Cell IoT modules that support narrow-band IoT and 4G cell networks will enable cell connectivity, device management, and app enablement for low-power wide-area network IoT. B...
The hierarchical architecture that distributes "compute" within the network specially at the edge can enable new services by harnessing emerging technologies. But Edge-Compute comes at increased cost that needs to be managed and potentially augmented by creative architecture solutions as there will always a catching-up with the capacity demands. Processing power in smartphones has enhanced YoY and there is increasingly spare compute capacity that can be potentially pooled. Uber has successfully ...
SYS-CON Events announced today that CrowdReviews.com has been named “Media Sponsor” of SYS-CON's 22nd International Cloud Expo, which will take place on June 5–7, 2018, at the Javits Center in New York City, NY. CrowdReviews.com is a transparent online platform for determining which products and services are the best based on the opinion of the crowd. The crowd consists of Internet users that have experienced products and services first-hand and have an interest in letting other potential buye...
When talking IoT we often focus on the devices, the sensors, the hardware itself. The new smart appliances, the new smart or self-driving cars (which are amalgamations of many ‘things'). When we are looking at the world of IoT, we should take a step back, look at the big picture. What value are these devices providing. IoT is not about the devices, its about the data consumed and generated. The devices are tools, mechanisms, conduits. This paper discusses the considerations when dealing with the...