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)

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.


IoT & Smart Cities Stories
Nicolas Fierro is CEO of MIMIR Blockchain Solutions. He is a programmer, technologist, and operations dev who has worked with Ethereum and blockchain since 2014. His knowledge in blockchain dates to when he performed dev ops services to the Ethereum Foundation as one the privileged few developers to work with the original core team in Switzerland.
René Bostic is the Technical VP of the IBM Cloud Unit in North America. Enjoying her career with IBM during the modern millennial technological era, she is an expert in cloud computing, DevOps and emerging cloud technologies such as Blockchain. Her strengths and core competencies include a proven record of accomplishments in consensus building at all levels to assess, plan, and implement enterprise and cloud computing solutions. René is a member of the Society of Women Engineers (SWE) and a m...
Andrew Keys is Co-Founder of ConsenSys Enterprise. He comes to ConsenSys Enterprise with capital markets, technology and entrepreneurial experience. Previously, he worked for UBS investment bank in equities analysis. Later, he was responsible for the creation and distribution of life settlement products to hedge funds and investment banks. After, he co-founded a revenue cycle management company where he learned about Bitcoin and eventually Ethereal. Andrew's role at ConsenSys Enterprise is a mul...
Whenever a new technology hits the high points of hype, everyone starts talking about it like it will solve all their business problems. Blockchain is one of those technologies. According to Gartner's latest report on the hype cycle of emerging technologies, blockchain has just passed the peak of their hype cycle curve. If you read the news articles about it, one would think it has taken over the technology world. No disruptive technology is without its challenges and potential impediments t...
If a machine can invent, does this mean the end of the patent system as we know it? The patent system, both in the US and Europe, allows companies to protect their inventions and helps foster innovation. However, Artificial Intelligence (AI) could be set to disrupt the patent system as we know it. This talk will examine how AI may change the patent landscape in the years to come. Furthermore, ways in which companies can best protect their AI related inventions will be examined from both a US and...
In his general session at 19th Cloud Expo, Manish Dixit, VP of Product and Engineering at Dice, discussed how Dice leverages data insights and tools to help both tech professionals and recruiters better understand how skills relate to each other and which skills are in high demand using interactive visualizations and salary indicator tools to maximize earning potential. Manish Dixit is VP of Product and Engineering at Dice. As the leader of the Product, Engineering and Data Sciences team at D...
Bill Schmarzo, Tech Chair of "Big Data | Analytics" of upcoming CloudEXPO | DXWorldEXPO New York (November 12-13, 2018, New York City) today announced the outline and schedule of the track. "The track has been designed in experience/degree order," said Schmarzo. "So, that folks who attend the entire track can leave the conference with some of the skills necessary to get their work done when they get back to their offices. It actually ties back to some work that I'm doing at the University of San...
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...
Bill Schmarzo, author of "Big Data: Understanding How Data Powers Big Business" and "Big Data MBA: Driving Business Strategies with Data Science," is responsible for setting the strategy and defining the Big Data service offerings and capabilities for EMC Global Services Big Data Practice. As the CTO for the Big Data Practice, he is responsible for working with organizations to help them identify where and how to start their big data journeys. He's written several white papers, is an avid blogge...
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...