When switching to an amazon web services infrastructure, one of the main challenges is testing.
Components such as DynamoDB and S3 come in handy however they come with a cost.
When it comes to continuous integration you will end up spending resources if you use the amazon components.
Some of these components have their clones that are capable of running locally.
You can use DynamoDB locally.
By issuing
java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb
you will have a local DynamoDB instance up and running.
Also on http://localhost:8000/shell you have a DynamoDB Shell (based on javascript) which will help you to get started.
In order to connect to the local instance you need to set the endpoint on your DynamoDB client.
On Java
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); client.setEndpoint("http://localhost:8000");
On Node.js
var AWS = require('aws-sdk'); var config = {"endpoint":"http://localhost:8000"}; var client = new AWS.DynamoDB(config);
Another base component of Amazon Web Services is the Simple Storage Service (S3).
Luckily we have fake-s3 . Fake-S3 a lightweight server clone of amazon S3, exists.
Installing and running fake-s3 is pretty simple
gem install fakes3 fakes3 -r /mnt/fakes3_root -p 4567
In order to connect you have to specify the endpoint
On Java
AmazonS3 client = new AmazonS3Client(); client.setEndpoint("http://localhost:8000");
On Node.js
var AWS = require('aws-sdk'); var config = {"endpoint":"http://localhost:8000"}; var client = new AWS.S3(config);
These tools will come in handy during the development face, especially when you get started and want a simple example. By running them locally you avoid overhead of permissions and configurations that come with each component you upload on amazon.
4 thoughts on “Testing Amazon Web Services Codebase: DynamoDB and S3”