<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Filip pettersson</title>
    <description>The latest articles on DEV Community by Filip pettersson (@tqfipe).</description>
    <link>https://dev.to/tqfipe</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F322089%2F082daf34-8d8c-41bb-9803-af6b8b706305.jpg</url>
      <title>DEV Community: Filip pettersson</title>
      <link>https://dev.to/tqfipe</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tqfipe"/>
    <language>en</language>
    <item>
      <title>Simply: AWS Dynamodb</title>
      <dc:creator>Filip pettersson</dc:creator>
      <pubDate>Sun, 30 Aug 2020 13:14:56 +0000</pubDate>
      <link>https://dev.to/tqfipe/simply-aws-dynamodb-1kb8</link>
      <guid>https://dev.to/tqfipe/simply-aws-dynamodb-1kb8</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TrcnTwEK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://upload.wikimedia.org/wikipedia/commons/f/fd/DynamoDB.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TrcnTwEK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://upload.wikimedia.org/wikipedia/commons/f/fd/DynamoDB.png" alt="" width="245" height="222"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  What is DynamoDb?
&lt;/h1&gt;

&lt;p&gt;DynamoDb is a NoSQL, fully managed, key-value database within AWS&lt;/p&gt;

&lt;h1&gt;
  
  
  Why should I use it?
&lt;/h1&gt;

&lt;p&gt;when it comes to data storage selecting what technology to use is always a big decisions, DynamoDb is like any other technology not a silver bullet but it does offer a lot of positives if you need a document based key-value storage&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits of DynamoDb
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Low latency &lt;/li&gt;
&lt;li&gt;Scaleable and fully managed&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/dynamodb/pricing"&gt;Cheap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Highly durable&lt;/li&gt;
&lt;li&gt;Easy for beginners&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/dynamodb/features/"&gt;And much more&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  How do I start?
&lt;/h1&gt;

&lt;p&gt;First you're gonna need an AWS account, &lt;a href="https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/"&gt;follow this guide&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ Setting up our first DynamoDb database
&lt;/h2&gt;

&lt;p&gt;If you feel like it you can set your region on the top right corner of the AWS console, it should default to us-east-1 but you can select something closer to you, read more about &lt;a href="https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html"&gt;regions here.&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FBoOYzLM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/n3pvnqevhfeosm945sbo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FBoOYzLM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/n3pvnqevhfeosm945sbo.png" alt="" width="844" height="1566"&gt;&lt;/a&gt;&lt;br&gt;
From the AWS console head to &lt;strong&gt;Services&lt;/strong&gt; and search for &lt;strong&gt;DynamoDb&lt;/strong&gt; select the first option.&lt;/p&gt;

&lt;p&gt;The first time you open up DynamoDb you should see a blue button with the text &lt;strong&gt;Create Table&lt;/strong&gt;, click it. &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--W3R1cQ5V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/fv4qgo9324al0fxx7ffr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--W3R1cQ5V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/fv4qgo9324al0fxx7ffr.png" alt="" width="880" height="422"&gt;&lt;/a&gt;&lt;br&gt;
Now you're presented with some options for creating your table, enter &lt;em&gt;myFirstTable&lt;/em&gt; (this can be anything) in the &lt;em&gt;Table name&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  🔑 Primary Key
&lt;/h3&gt;

&lt;p&gt;A key in a database is something used to identify items in the table and as such it must always be unique for every item. In DynamoDb the key is built up by a &lt;strong&gt;Partion key&lt;/strong&gt; and an option &lt;strong&gt;Sort key&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Partition Key: As the tooltip in the AWS console describes the Partion key is used to partion data across hosts because of that for best practice you should use an attribute that has a wide range of values, for now we don't need to worry much about this, the main thing to takeaway is that if the Partion key is used alone it must be unique&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sort key: if the optional sort key is included the partition key does not have to be unique (but the combination of partition key and sort key does) it allows us to sort within a partition.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's continue, for this example I'm gonna say i'm creating something like a library system, so I'll put Author as the Partion key and BookTitle as the sort Key &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SnH9f7vc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/wdx9z76bvpzie98gzycf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SnH9f7vc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/wdx9z76bvpzie98gzycf.png" alt="" width="880" height="254"&gt;&lt;/a&gt;&lt;br&gt;
note that this is just one of many ways you could setup this type of table and choosing a good primary key is arguably one of the most important decisions when creating a DynamoDb table, what's good about AWS is that we can create a table, try it out, change our minds and just create a new one with ease. &lt;/p&gt;

&lt;p&gt;Next up are table settings, these are things like &lt;a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/SecondaryIndexes.html"&gt;secondary indexes&lt;/a&gt;, &lt;a href="https://aws.amazon.com/dynamodb/pricing/provisioned/"&gt;provisioned capacity&lt;/a&gt;, &lt;a href="https://aws.amazon.com/blogs/database/amazon-dynamodb-auto-scaling-performance-and-cost-optimization-at-any-scale/"&gt;autoscaling&lt;/a&gt;, &lt;a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/EncryptionAtRest.html"&gt;encryption&lt;/a&gt; and such. It's a good idea to eventually get a bit comfortable with these options and I highly recommend looking into &lt;a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.OnDemand"&gt;on-demand read/write capacity mode&lt;/a&gt;, but as we just want to get going now the default settings are fine and will not cost you anything for what we are doing today.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UV-4cLvg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/k1wio7l75z4eeh4zhylf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UV-4cLvg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/k1wio7l75z4eeh4zhylf.png" alt="" width="880" height="243"&gt;&lt;/a&gt;&lt;br&gt;
Hit create and wait for your table to be created! &lt;/p&gt;

&lt;p&gt;Now you should be taken to the &lt;strong&gt;tables&lt;/strong&gt; view of DynamoDb and your newly created table should be selected, this can be a bit daunting as there is a lot of options and information, but let's head over to the &lt;strong&gt;Items&lt;/strong&gt; tab&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8JzsUOgj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/pngyobjnoj25te22zxgu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8JzsUOgj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/pngyobjnoj25te22zxgu.png" alt="" width="880" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From here we could create an Item directly from the console (feel free to try it out if you want) but I think we can do one better and setup a lambda for interacting with the table.&lt;/p&gt;
&lt;h1&gt;
  
  
  📥 Creating our first Item
&lt;/h1&gt;

&lt;p&gt;If you've never created an AWS lambda before I have written a similar guide to this one on the topic, you can find it &lt;a href="https://dev.to/tqfipe/simply-aws-lambda-bh1"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create a lambda called DynamoDbInteracter &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9TZH7Mim--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/as6zkof2951gua8ubrin.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9TZH7Mim--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/as6zkof2951gua8ubrin.png" alt="Alt Text" width="880" height="306"&gt;&lt;/a&gt;&lt;br&gt;
make sure to select to create a new role from a template and search for the template role &lt;strong&gt;Simple microservice permissions&lt;/strong&gt; (this will allow us to perform any actions agains dynamodb)&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MFqQ8xlW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/6ts45xm1mrm8zrnydsuj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MFqQ8xlW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/6ts45xm1mrm8zrnydsuj.png" alt="" width="880" height="383"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CTP3gRUB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/htwtuw0lju016tr80jzy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CTP3gRUB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/htwtuw0lju016tr80jzy.png" alt="Alt Text" width="433" height="259"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After creating the lambda we can directly edit it in the AWS console, copy and paste this code&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;AWS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;aws-sdk&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;AWS&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;DynamoDB&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;DocumentClient&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;exports&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;handler&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;action&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;switch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;action&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;put&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;putItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
                &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;get&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;getItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
                &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nx"&gt;e&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;


&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;putItem&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;TableName&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;myFirstTable&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;Item&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
         &lt;span class="na"&gt;Author&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;author&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
         &lt;span class="na"&gt;BookTitle&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bookTitle&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
         &lt;span class="na"&gt;genre&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;genre&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;put&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;promise&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;getItem&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;TableName&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;myFirstTable&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;Key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;Author&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;author&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;BookTitle&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bookTitle&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;


    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;promise&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;hit Save&lt;br&gt;
then create a new test event like this&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"put"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"options"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"author"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Douglas Adams"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"bookTitle"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"The Hitchhiker's Guide to the Galaxy"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"genre"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Sci-fi"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and run that test event. &lt;/p&gt;

&lt;p&gt;Go back to DynamoDb and the Items tab and you should see your newly created Item!&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--a2cwIXel--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rcv0hiyr3ep59b60aduw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--a2cwIXel--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rcv0hiyr3ep59b60aduw.png" alt="Alt Text" width="880" height="294"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notice that we did not have to specify the &lt;strong&gt;genre&lt;/strong&gt; attribute that is because DynamoDb is NoSQL it follows no schemea and any field + value can be added to any item irregardless of the other items composition as long as the primary key is valid. &lt;/p&gt;
&lt;h1&gt;
  
  
  📤 Retrieving our Item
&lt;/h1&gt;

&lt;p&gt;Now let's try to get that item, create another test event like this&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"get"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"options"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
         &lt;/span&gt;&lt;span class="nl"&gt;"author"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Douglas Adams"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"bookTitle"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"The Hitchhiker's Guide to the Galaxy"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and run it.&lt;br&gt;
You can expand the execution results and you should see your response with the full data of the item&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--amKYCTkP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/lnp65l6o2pm3fkttpu2z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--amKYCTkP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/lnp65l6o2pm3fkttpu2z.png" alt="" width="880" height="179"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  🎉 Congratulations!
&lt;/h1&gt;

&lt;p&gt;You've just configured your first DynamoDb table and performed calls against it with a lambda but don't stop here the possibilities with just these two AWS services are endless, my next guide in this series will cover API-Gateway and how we can connect an API to our lambda that then communicates with our database table, stay tuned! &lt;/p&gt;

&lt;h1&gt;
  
  
  What's next?
&lt;/h1&gt;

&lt;p&gt;As I'm sure you understand we've just begun to scratch the surface of what DynamoDb has to offer, my goal with this series of guides is to get your foot in the door with some AWS services and show that although powerful and vast they are still easy to get started with, to check out more of what calls can be made with the DynamoDb API (such as more complicated queries, updates and scans as well as batch writes and reads) check &lt;a href="https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html"&gt;this&lt;/a&gt; out, feel free to edit the code and play around. &lt;/p&gt;

&lt;p&gt;I would also like to recommend &lt;a href="https://medium.com/brainstation23/break-the-ice-with-dynamodb-5302e7456d2a"&gt;this guide&lt;/a&gt; if you want even more in-depth look into DynamoDb, it covers most of what I have here but more detailed and also goes over some of the API actions mentioned above.  &lt;/p&gt;

&lt;h2&gt;
  
  
  👨‍💻 Contact me
&lt;/h2&gt;

&lt;p&gt;Questions? Thoughts? Feedback?&lt;br&gt;
Twitter: &lt;a href="https://twitter.com/tqfipe"&gt;@tqfipe&lt;/a&gt;&lt;br&gt;
Linkedin: &lt;a href="https://www.linkedin.com/in/filip-pettersson-08747bb7/"&gt;Filip Pettersson&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>beginners</category>
      <category>database</category>
      <category>serverless</category>
    </item>
    <item>
      <title>Simply: AWS lambda</title>
      <dc:creator>Filip pettersson</dc:creator>
      <pubDate>Mon, 02 Mar 2020 15:07:52 +0000</pubDate>
      <link>https://dev.to/tqfipe/simply-aws-lambda-bh1</link>
      <guid>https://dev.to/tqfipe/simply-aws-lambda-bh1</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MTJ10YiQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/360/1%2Aqg4GEY91S1IHZ1nXfPCVSg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MTJ10YiQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/360/1%2Aqg4GEY91S1IHZ1nXfPCVSg.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  λ  What is AWS lambda?
&lt;/h1&gt;

&lt;p&gt;With AWS lambda we can write code and execute it without caring about configuring servers. &lt;/p&gt;

&lt;h1&gt;
  
  
  λ Why should I use it?
&lt;/h1&gt;

&lt;p&gt;It enables you to quickly develop business relevant code and deliver value for your customers and stakeholders&lt;/p&gt;

&lt;h1&gt;
  
  
  λ How do I start?
&lt;/h1&gt;

&lt;p&gt;First you're gonna need an AWS account, &lt;a href="https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/"&gt;follow this guide&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️Creating our first lambda
&lt;/h2&gt;

&lt;p&gt;From the AWS console head to &lt;strong&gt;Services&lt;/strong&gt; and search for &lt;strong&gt;Lambda&lt;/strong&gt; select the first option&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jk1fUj9u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/x14g9ec.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jk1fUj9u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/x14g9ec.png" alt="Imgur"&gt;&lt;/a&gt;&lt;br&gt;
Click &lt;strong&gt;Create Function&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zzrBRoju--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/vMg1Vd5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zzrBRoju--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/vMg1Vd5.png" alt="Imgur"&gt;&lt;/a&gt;&lt;br&gt;
Enter your name for the lambda and select runtime (i'm going with Node.js) Leave everything else default&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--b0JwAsQu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/lxDK53H.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--b0JwAsQu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/lxDK53H.png" alt="Imgur"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  ⌨️ Writing code
&lt;/h2&gt;

&lt;p&gt;When your lambda is created you'll be taken to that lambdas page where you can see and setup lots of information and options about your lambda, let's not worry to much about that right now and just scroll down to "Function Code"&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nqXgxd1n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/GoeMhar.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nqXgxd1n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/GoeMhar.png" alt="Imgur"&gt;&lt;/a&gt;&lt;br&gt;
Using the inline editor (you are of course able to write code with any IDE you want and deploy it to AWS but i'll cover that in another post) let's enter some code, this is what I used&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;exports&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;handler&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;event&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// initiate animals array&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;animals&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;cat&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dog&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;tardigrade&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

    &lt;span class="c1"&gt;// get input&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;input&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// concatinate animals with input&lt;/span&gt;
    &lt;span class="nx"&gt;concatAnimalsInput&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;animals&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;// create a response object and return it&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;statusCode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;animals&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;concatAnimalsInput&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;animals&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;input&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;animals&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;animals&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;animals&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;concat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gjnZ8L-l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/1ymDaDW.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gjnZ8L-l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/1ymDaDW.png" alt="Imgur"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🐦 Testing our code
&lt;/h2&gt;

&lt;p&gt;At the top of the screen click &lt;strong&gt;configure test event&lt;/strong&gt; and create an event to execute the function with&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yNdqr41I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/f1vBFSz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yNdqr41I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/f1vBFSz.png" alt="Imgur"&gt;&lt;/a&gt;&lt;br&gt;
The event in JSON format&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4PFkTvQa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/Ch3tD3o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4PFkTvQa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/Ch3tD3o.png" alt="Imgur"&gt;&lt;/a&gt;&lt;br&gt;
Hit &lt;strong&gt;Create&lt;/strong&gt; and finally click the "Test" button&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FK_Qaaap--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/AV90cma.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FK_Qaaap--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/AV90cma.png" alt="Imgur"&gt;&lt;/a&gt;&lt;br&gt;
After its execution you'll see the result and the output by clicking &lt;strong&gt;Details&lt;/strong&gt; in the green result box, you can also click &lt;strong&gt;(logs)&lt;/strong&gt; to enter CloudWatch Logs and get a better look into all executions of your lambda&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0kyxyzpM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/T9FgYEZ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0kyxyzpM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/T9FgYEZ.png" alt="Imgur"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  🎉 Good Job!
&lt;/h1&gt;

&lt;p&gt;You've just created a lambda and the possibilities with it are endless, in &lt;a href="https://dev.to/tqfipe/simply-aws-dynamodb-1kb8"&gt;future posts&lt;/a&gt; I'll discuss how we can connect an API to our lambda via &lt;a href="https://aws.amazon.com/api-gateway/"&gt;API Gateway&lt;/a&gt; and how we can store our data in the NoSQL database &lt;a href="https://aws.amazon.com/dynamodb/"&gt;DynamoDB&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  λ Discussion
&lt;/h1&gt;

&lt;h2&gt;
  
  
  💰What about the price?
&lt;/h2&gt;

&lt;p&gt;With Lambda the first &lt;strong&gt;million&lt;/strong&gt; requests each month are alway free after that you pay $0.20 per 1M requests and $0.0000166667 for every GB-second, read more &lt;a href="https://aws.amazon.com/lambda/pricing/"&gt;here&lt;/a&gt;. Lambda is usually used together with other AWS services that might also incur cost such as Cloudwatch logs which we touched upon in this post, Cloudwatch logs also offer a &lt;a href="https://aws.amazon.com/cloudwatch/pricing/"&gt;free tier&lt;/a&gt;, 5GB of Log Data Ingestion and 5GB of Log Data Archive, which means nothing we did in this post will result in any cost even if you do no cleanup. &lt;br&gt;
Read more about the economics of cloud here &lt;a href="https://tiqqe.com/cloud-is-expensive/"&gt;"Cloud is expensive"&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  I don't want to use the inline code editor!
&lt;/h2&gt;

&lt;p&gt;Great, me neither, I suggest as a first step either looking into exporting your code to zip and uploading to the lambda &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PcyCWkvZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/l4JdB5O.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PcyCWkvZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/l4JdB5O.png" alt="Imgur"&gt;&lt;/a&gt;&lt;br&gt;
or exploring the &lt;a href="https://serverless.com/"&gt;Serverless framework&lt;/a&gt;, a tool that makes it easy to deploy serverless application such as Lambda!&lt;/p&gt;

&lt;p&gt;If you liked this guide please consider reading my latest one about DynamoDb, written in the same way as this one, you can find it &lt;a href="https://dev.to/tqfipe/simply-aws-dynamodb-1kb8"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  👨‍💻 Contact me
&lt;/h2&gt;

&lt;p&gt;Questions? Thoughts? &lt;br&gt;
Twitter: &lt;a href="https://twitter.com/tqfipe"&gt;@tqfipe&lt;/a&gt;&lt;br&gt;
Linkedin: &lt;a href="https://www.linkedin.com/in/filip-pettersson-08747bb7/"&gt;Filip Pettersson&lt;/a&gt;&lt;/p&gt;

</description>
      <category>lambda</category>
      <category>aws</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
