In my last post I showed you how I created a new table in DynamoDB. Now it’s time to access it, and then the contents to our Debug Hub.
In order to do so I will need the AWS SDK (software development kit) installed in my project. You can find the details here :
Just install it into the debug hub project.
sudo npm install aws-sdk
So I’ve extended the index.html page of the Debug Server to allow a new item in the sidebar, pointing to a newly create html page. I called it “Dynamo DB”.
I will be connecting to the service with my own credentials. That is : the credentials I created in my last post, the “smartmirror” user.
To do this efficiently, I will create a new JSON file in the root of my project. In it, I will have to specify the following things :
- The Access Key ID. Information I got when creating the user.
- The secret Access Key. Also obtained after creating the user.
- The region. Very important.
- The endpoint : the URL at which the AWS service can be reached. Notice how the region is part of the endpoint as well.
If you want to know the region, you can check out the details of the table created in DynamoDB. It has a unique ARN (amazon resource name). In it, you can see the code of the region you’re in.
So now for the code. I will start by editing the dynamodb.html file to add a button and a grid. The button will start a function that retrieves the data from the table. The grid will display the result. This is quite straight forward. We did that before when creating the page for the debug server.
Notice how I called the button “getcommands”.
The code is visible in the screenshot below.
There are some things to be said about this code. At the bottom you can see the jQuery statement linking the button to the getCommandQueue function, which will do all the dirty work.
This function first requires the “aws-sdk” module, which we installed earlier. It then configures it using the JSON file we created. This way we can configure the connection with one single statement instead of having to set the access keys every single time. That wouldn’t be very secure either.
Next a new variable is created called “params”. This is an object that will be sent along with the query, and contains all the information needed to get data from the table :
- The table name
- An expression showing a filter
- A mapping to the correctie field
- A mapping to the correct value
the condition has a syntax whereby the field is represented by a placeholder prefixed with a # symbol, and a value placeholder prefixed with a : symbol.
These placeholders are resolved in the next 2 attributes of this parameter JSON : we map the column to the “Session” attribute, and we map the value to hardcoded “1234”, which is the key I specified when creating a record in the table.
And next, we’re all good to go. The query method is called of the docClient object which is responsible for the communication with the DynamoDB service. The param is passed along, and there’s also a callback function. It has 2 parameters. When an error is returned, the “err” parameter will contain the details of the error. When the call is successful, the data will be in the “data” parameter. With this “data”, a foreach loop is executed, and it adds the result to the table. The AddRow function can be seen below.
That that’s it. Below is the result of this endeavour.