Amazon Simple Storage Service (S3), a storage service for the Internet is designed to make web scale computing easier for developers. It offers a simple web-service interface that can be used to store and retrieve data, anytime & anywhere.

Why use S3?

The most important thing about S3 is its reliability. According to Amazon’s SLA, it guarantees 99.9% uptime

is its According to Amazon’s SLA, it guarantees uptime S3 is fast as compared to other storage services

Being economical and trustworthy, it is extensively used by developers

S3 is based on a very simple model ‘ Pay Per Usage ‘ i.e, you only pay for the usage

‘ i.e, you only pay for the usage Highly scalable, it secures a solution for backing up and archiving your critical data

You can also host your static website on S3 with highly available(HA) hosting solution that scales automatically as per the traffic.

In this post, I will walk you through a very simple process of integrating S3 in your application.

How S3 works?

Prerequisites

Creating Amazon S3 Bucket

Before you start integrating S3, you need to create an S3 Bucket. Every object in Amazon S3 is stored in a bucket.

To create a bucket:

Open the Amazon S3 Console

On the Amazon S3 console, click Create Bucket

Enter a bucket name in the Bucket Name field

field In the Region box, select a region

box, select a region If you want to setup-logging, then click on ‘ Set Up Logging ‘, Else, go to ‘ Create ‘ to create the bucket

‘, Else, go to ‘ ‘ to create the bucket When Amazon S3 successfully creates your bucket, the console displays the properties of your empty bucket

Now, you have successfully created a Bucket. You can also manage the permissions on Bucket from the properties tab, available on console.

Integrating S3 in your Application using Amazon S3 SDKs.

Using JAVA SDK:

import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.services.elastictranscoder.model.Permission; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3Client; import com.amazonaws.services.s3.model.AccessControlList; import com.amazonaws.services.s3.model.GroupGrantee; import com.amazonaws.services.s3.model.ObjectMetadata; import com.amazonaws.services.s3.model.PutObjectRequest; import java.io.File; // Instantiate the S3 client with your AWS credentials AmazonS3 s3 = new AmazonS3Client(new BasicAWSCredentials( "Aws_Access_Key", "Aws_Secret_Key")); // If you want to create bucket // bucketName: name of the bucket s3.createBucket("bucketName"); // bucketName: Amazon Bucket Name // key: The file location that you want to create for your file. // e.g, key = "user/appName/myapp.zip" // File_To_Save: The location of your file. PutObjectRequest objectFile = new PutObjectRequest( "bucketName", "key", "File_To_Save"); // Set Access Control List AccessControlList acl = new AccessControlList(); acl.grantPermission(GroupGrantee.AllUsers, com.amazonaws.services.s3.model.Permission.Read); objectFile.setAccessControlList(acl); // push file to s3 s3.putObject(objectFile);

Using PHP SDK:

// include the Include the SDK using the Composer autoloader require 'vendor/autoload.php'; use Aws\S3\S3Client; // Instantiate the S3 client with your AWS credentials $s3Client = S3Client::factory(array( 'key' => 'Aws_Access_Key', 'secret' => 'Aws_Secret_Key', )); // If you want to create bucket // bucketName: name of the bucket $s3Client->createBucket(array( 'Bucket' => 'bucketName' )); // push file to s3 // bucketName : Amazon Bucket Name // key: The file location that you want to create for your file. // e.g, key = "user/appName/myapp.zip" // File_To_Save: The location of your file. $client->putObject(array( 'Bucket' => 'bucketName', 'Key' => 'key', 'SourceFile' => 'File_To_Save', 'ACL' => 'public-read' ));

Using RUBY SDK

require 'rubygems' require 'aws-sdk' # Instantiate the S3 client with your AWS credentials s3 = AWS::S3.new( :access_key_id => 'Aws_Access_Key', :secret_access_key => 'Aws_Secret_Key') # If you want to create bucket # bucketName: name of the bucket bucket = s3.buckets.create('bucketName', :acl => :public_read) # push file to s3 # bucketName: Amazon Bucket Name # key: The file location that you want to create for your file. # e.g, key = "user/appName/myapp.zip" # File_To_Save: The location of your file. obj = bucket.objects['key'] obj.write(:file => file_name) puts obj.public_url

In this blog, I have explained you about the Integration of Amazon S3 (using Java, PHP, Ruby SDKs) in your Application.

If you have questions or need any further assistance, do write us at support@shephertz.com