{"componentChunkName":"component---src-templates-tag-js","path":"/tags/general/","result":{"data":{"site":{"siteMetadata":{"title":"LoginRadius Blog"}},"allMarkdownRemark":{"totalCount":1,"edges":[{"node":{"fields":{"slug":"/engineering/working-with-aws-lambda-and-sqs/"},"html":"<p>This blog is a short guide on implementing AWS Lambda and SQS together. First we’ll introduce these technologies and explain why they work well together, then walkthrough some configurations and invocation using a simple Nodejs script.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 448px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 47.09821428571428%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB2ElEQVQoz2P4DwT//gGJt49uvr207//f3//BQv9RAIj769evO5f2fHh2GS7KAMQfXzx6dnjFpqqgM5WW75fnfL++9/+fX8ha//z+de3cnlntsf2FBtfXhLw60//r412Q5k/P7++r8zteYbUp1+pCi9etmSmX2zzf758Jtu/vv79/gfTxPYvKY5SyglXSg7Vrkg1nVxrum+H97d1dhrf3r+0qsjnT4rUp3+5co9vVpQ0nl3TdXdUM1vv33z+Q5pO7Zq7vdljR6dGVbz67KXDrsvZrpzb8/v6B4d2D67uKbE83uG3Osz3b5HmgyPx8vdPddZ3Ims/tmzO11GB+o31/kdnV1cE31gZfWxP25c0NkObdJQ5nmr0259udbXS9PLvwyqquO2vakTWf2Ttn/yyfE8vid8yMeHCw4fW1FR8eHvzz4yPD+4c3dhRYHS+33Jxnfb7F6/O+SU8XZr3a2gWOBKifD2yZPrXM5OSavLcXpny8POnJwfLb2zJBfgaa//zqidsrmtYXuJyuMH81PeTD3ql/P7+BxhA4Fr99/bh/y6ymPLuefP1zi71vbM17d2//v7+/GcA2gFTcP7Pv8Y7p/z6/gsc8IpbB3M+f3p3eO+/1nb3/wX4BAgCRTp73+XcmigAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"blog aws lambda sqs 1\"\n        title=\"blog aws lambda sqs 1\"\n        src=\"/static/770c89c93d5798dacecb6b81d79b6c00/33b38/blog-aws-lambda-sqs-1.png\"\n        srcset=\"/static/770c89c93d5798dacecb6b81d79b6c00/33b38/blog-aws-lambda-sqs-1.png 448w\"\n        sizes=\"(max-width: 448px) 100vw, 448px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p><strong>What are they?</strong>\nAWS Lambda is a popular choice in serverless computing. As an event-driven platform, AWS Lambda requires users to configure event sources in order to run a function. Their built-in support for many AWS services like S3 and SQS as event sources allow for relatively simple configuration. Note that Lambda functions can also be triggered via HTTP(S) by using AWS API Gateway service.</p>\n<p>AWS SQS (Simple Queue Service) is a queue service with 2 types: standard and FIFO. The major difference is that standard queues guarantee “at-least once” delivery of its messages, while FIFO queues guarantee “exactly-once” delivery. FIFO queues, however, provide lower maximum throughput than standard.</p>\n<p>As previously mentioned, AWS SQS can be an event source for AWS Lambda. This means that when a message is added to the queue, the configured Lambda function will be invoked with an event containing this message.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 434px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.184331797235025%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAAsTAAALEwEAmpwYAAABQUlEQVQY001QPUvDUBTNP7KDm9DNRf+Bk7ODCIUqOHUQFFGwXZ3t4gfVglTdLH5UKkoj9MumqWkbm7TJS/LSpHn3PtMUxcMdzr1czrn3CDwC9VGzIQDk/6DKYle8wokZdRgVJ0pDfz7nnhVyAZGrhGkWuD4aFBkLNE2zqSdV7o4S85lE7OUiCYE31IeuzwblwkNy4XU7rpxswdgWhg4QF2ZWAwv0kdmoV5uS8nSduTyI3x6vtIqHNtFr1ZqkqG/ZvceNWCm19JFe9Q1V6JtsdlMIk4LjhXSqVS/n8ullMbcm3++wCZ1tdIunxfW5SmpxkN0MHEMIbQ0KOvEMZ6I74AfIcQoAJpby7zf741Fzqo4QDn3Pk0sF6Wx33KsxwPBnZMhbbeVbN+E3Kox8KHXbnd5fhqFeX1U/252+NpLkL4uQH62JPUSBGRLAAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"blog aws lambda sqs 2\"\n        title=\"blog aws lambda sqs 2\"\n        src=\"/static/9ad82d0a34ee856fd75467a0556ee069/ade6e/blog-aws-lambda-sqs-2.png\"\n        srcset=\"/static/9ad82d0a34ee856fd75467a0556ee069/ade6e/blog-aws-lambda-sqs-2.png 434w\"\n        sizes=\"(max-width: 434px) 100vw, 434px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p><strong>But why use them together?</strong><br>\nCommon reasons include better handling Lambda function invocations and errors. For function invocations, the default concurrency limit is 1000. If a function has reached this limit, any additional invocations will fail with a throttling error. However, with SQS as an event source, events resulting in throttling errors are automatically retried based on set configs. This prevents the loss of events due to unexpected jumps in usage. Additionally, dead-letter queues (DLQ) can be configured as a place where failed events go, to avoid retrying indefinitely. Failed events in DLQ can then be sent somewhere like a DB for analysis.</p>\n<p>One limitation for many use cases was the “at-least once” delivery model of events with standard queues. Essentially, there was no guarantee that an event will only be delivered once to a consuming Lambda function. In cases where each event can strictly only be processed once, one would have to employ various strategies resulting in higher overhead and complexity. But, this is no longer an issue because recently the AWS team added support for FIFO queues as event sources to Lambda functions.</p>\n<p><strong>Walkthrough</strong><br>\nLet’s set up a basic “Hello World” application with SQS and Lambda.</p>\n<p>1. Starting with SQS, add a standard queue.</p>\n<p>2. Now, add a Lambda function:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 43.69230769230769%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAAsTAAALEwEAmpwYAAABL0lEQVQoz32S627CMAyF+/7vtJeY9g9NCA00Sugl9zRNe7DdFjamEemTj+3EdtpUu889Dl9HXJsGbddBG00YGGthnROt7eKLJjjO/k+2XLU7HHE4K1x6B6U9+pDRuEQNrrgohRgjQgjwBOuUksQVwdZaJ3mOB8pXtc1QLqONE3QGugGkC07fCsZYDMMg8IFxHIWLaqR4jOmeK6WIrlTbwYYIR0nro2jrA43vl81DWhnuUxjrF3+NbTjvUZ3rmhyeIiOPBWNZKFMR/w/lsWeaJqGsOlLRSnUGrXGCSxlxpAQdfEXI3HDG85Ir85+Z55k6PDr+x8zMD82LzzK8khTUBs55uXamD55zXuym82KnrcDTVL8L0pV7rdH1/f19vYTf5opZraZ4W5/Qvr+h23/gBmfyuvrRFaCXAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"blog aws lambda sqs 3 1024x447\"\n        title=\"blog aws lambda sqs 3 1024x447\"\n        src=\"/static/fc4529f0bf774126503634505395642c/e5715/blog-aws-lambda-sqs-3-1024x447.png\"\n        srcset=\"/static/fc4529f0bf774126503634505395642c/a6d36/blog-aws-lambda-sqs-3-1024x447.png 650w,\n/static/fc4529f0bf774126503634505395642c/e5715/blog-aws-lambda-sqs-3-1024x447.png 768w,\n/static/fc4529f0bf774126503634505395642c/2bef9/blog-aws-lambda-sqs-3-1024x447.png 1024w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>3. Create a new execution role with the following configs:<br>\na. Trusted Entity: Lambda<br>\nb. Permissions: AWSLambdaBasicExecutionRole; AWSLambdaSQSQueueExecutionRole</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 512px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 57.03125%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA7ElEQVQoz4VSi27DIAzk/z+rv7BPqLQuRCSMp8FAdoUu6vrIToplgs/2XSK01uu6xhhrrdt/aK0xl22r0xJOH1JIKed5JqLwCzTa81JKewP0EswMJgiI3vtpmrAL2i3Lgpe4rR2j+gHi/oAi7rAdIKMdeiE3xuD4MPwPGUVKqX1zMPc4cM/EJPG8TC0FOqgjpYSYcx750WT0hvPOB+ucd31X843Zrd5wpBneWuuC04mcJ/YxBcox8SuznshA5sbm06rzZeUvFaQmfFLjczsmQxK2hD1QdxVIEc/Q+e6fEbiG1OGK76BO6walY/IPBgqFRAr7DkMAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"blog aws lambda sqs 4\"\n        title=\"blog aws lambda sqs 4\"\n        src=\"/static/9f83447cdf63a3b11b1098c9e83aa39b/01e7c/blog-aws-lambda-sqs-4.png\"\n        srcset=\"/static/9f83447cdf63a3b11b1098c9e83aa39b/01e7c/blog-aws-lambda-sqs-4.png 512w\"\n        sizes=\"(max-width: 512px) 100vw, 512px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>4. Use newly created role in Lambda function. Remember to save (top right).</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 759px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 39.84615384615385%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA3ElEQVQY04VR23KFIAz0/z9TaLUtCohJUMDTRY+XPnUnLmuYTDahGa1VSmmtu65n5vgflgeaMM/GmGEcnXMppZxzyfniJ0qpkVNOJxqJEfV+mqxzYGjETBQqMQhHlUTG07eTVLbXiVqMKjMMff81E6P1mtIR6RSHlrjEZX09sHcOAdNeqW3bdr7182rbUwc3fgptq1qlMbjznkWqR+bDPD4IJN8Z/DPjGlXrmhpi0Z+9+uisDzB2+cx1NXdgV1i0SLTWgd+2SRYzyY8XS6unhfZueJLb5F+UUq5ZfgG9FdCeWW5mkAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"blog aws lambda sqs 5\"\n        title=\"blog aws lambda sqs 5\"\n        src=\"/static/bc5c66a5797178bc7f81a10b4acc9df6/ef3e1/blog-aws-lambda-sqs-5.png\"\n        srcset=\"/static/bc5c66a5797178bc7f81a10b4acc9df6/a6d36/blog-aws-lambda-sqs-5.png 650w,\n/static/bc5c66a5797178bc7f81a10b4acc9df6/ef3e1/blog-aws-lambda-sqs-5.png 759w\"\n        sizes=\"(max-width: 759px) 100vw, 759px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>5. Add a trigger:<br>\na. Batch size set to 1, so the Lambda Function will process 1 message at a time.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 512px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 73.046875%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAIAAABr+ngCAAAACXBIWXMAAAsTAAALEwEAmpwYAAABYklEQVQoz41SW26DMBDksr1UD1NV6kd/q0C+m9KQQgwY/H7w6NhWoyI1TUYjawEPs15PVnfjMI5fzbnrKReCcX4/s12eF/t9XhRSKTyPjN3PrPo8HqvqoyzPhECsjVFa36bSHM7HtqmbpizL98MB/U/TZN1tYJsQIuuf30bSTcu8Luu8LNN8G1A673HMrH3NNRfW2Xma14jlf0Q1zBXEhA09pdZaE0+LNZhfUQHrD7A563uKM5/qum07FNXphMmBQsh0ikRslVIyxjdiCDB0tGEMzG2C1to5/6f5RhxatQYThjDQuVS7ycM5Mcmwrr8QxVKmSxMxXiJA8ogQo4gB7QqRzDdi0g191w3DgFHJ8COFAm2HAYbKqAiU6xZxYCOnNPwat+e9R882pMSHFfR+vYIg1gZZU3AUUl4IpP5RXyKpQyoV3irBFMUV0yxFHMG8ln58SkRNCCnrlhQv5eNDu3v6Bl0TYEVofcLmAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"blog aws lambda sqs 6\"\n        title=\"blog aws lambda sqs 6\"\n        src=\"/static/e46348dd03d3c4ba184bd06f4e989f4e/01e7c/blog-aws-lambda-sqs-6.png\"\n        srcset=\"/static/e46348dd03d3c4ba184bd06f4e989f4e/01e7c/blog-aws-lambda-sqs-6.png 512w\"\n        sizes=\"(max-width: 512px) 100vw, 512px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>6. Programmatically enqueue a message into SQS with the following code in Nodejs:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"javascript\" data-index=\"0\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk4\">const</span><span class=\"mtk1\"> </span><span class=\"mtk12\">AWS</span><span class=\"mtk1\"> = </span><span class=\"mtk11\">require</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&quot;aws-sdk&quot;</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">AWS</span><span class=\"mtk1\">.</span><span class=\"mtk12\">config</span><span class=\"mtk1\">.</span><span class=\"mtk11\">update</span><span class=\"mtk1\">({</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">region:</span><span class=\"mtk1\"> </span><span class=\"mtk17\">&lt;</span><span class=\"mtk10\">AWS_SQS_REGION</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">, // TODO</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  accessKeyId: </span><span class=\"mtk17\">&lt;</span><span class=\"mtk10\">AWS_ACCESS_KEY_ID</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">, // TODO</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  secretAccessKey: </span><span class=\"mtk17\">&lt;</span><span class=\"mtk10\">AWS_SECRET_ACCESS_KEY</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\"> // TODO</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">});</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">const sqs = new AWS.SQS(</span><span class=\"mtk4\">{</span><span class=\"mtk1\"> </span><span class=\"mtk12\">apiVersion</span><span class=\"mtk1\">: </span><span class=\"mtk8\">&quot;2012-11-05&quot;</span><span class=\"mtk1\"> </span><span class=\"mtk4\">}</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">sqs.sendMessage(</span><span class=\"mtk4\">{</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">MessageBody</span><span class=\"mtk1\">: </span><span class=\"mtk10\">JSON</span><span class=\"mtk1\">.</span><span class=\"mtk11\">stringify</span><span class=\"mtk1\">({</span><span class=\"mtk12\">hello:</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&quot;world&quot;</span><span class=\"mtk1\">}),</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">QueueUrl</span><span class=\"mtk1\">: </span><span class=\"mtk17\">&lt;</span><span class=\"mtk10\">AWS_SQS_URL</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\"> // TODO</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">}, (err, data) =&gt; (err) ? console.log(&quot;Error&quot;, err) : console.log(&quot;Success&quot;, data.MessageId));</span></span></code></pre>\n<p>a. Create package.json with `npm init`<br>\nb. Install aws sdk dependency with `npm i aws-sdk --save`<br>\nc. Fill in your specific AWS account details. Find AWS_SQS_URL by selecting the queue you created, while AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY require creating a new IAM user with programmatic access. This user also needs permission to push messages into SQS.<br>\nd. Run script with `node app.js`<br>\ne. Navigate to Monitoring tab in your Lambda function, the invocations graph should have a new data point (may take a few minutes to update).</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 512px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 86.32812499999999%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAIAAABSJhvpAAAACXBIWXMAAAsTAAALEwEAmpwYAAABWklEQVQ4y6VT207CQBDd//8p9UF4EX3BGAOV0qWRXvbe7S60BU9bBCSYFJ1MJzPdMzNn9kKU1sEifJ/NZ/OPJE2ZEPNggXBJqTKFXM1EOBXRm1ZSm0Ibc64EyYzzjLGcMaEAacM0zxkXKWNRFNLlIgqDz/VaGoPVcyVcCKCRCSeHw7lUqi8MR7SqO8VffaFk+jp9HI3v7h8mzy9Pk8loPI4otWWJNeSbojBFZ38SPtDGh0adPaD1NdxVbWdGQmEttKd6Mdhv2tJGM8ZYkiSrOMbY2+12M0AAs9YSjBfHMaUUVkq5HywoQZz3zjlUQrwbLN/Jzu2apq7r498bOpfO7f8kh85NJ8PT6g586nwT4dPM/6PtPXYLuw3m3ns4VVXBge2P9BhiqXdgAW6TrXOq3CBGwDnvtyDLMtTG/cFzgIOw6gQAhLjH/ekSY8tlqnK8QcZAoRkmGBv9vgB7ptYEeBKDOQAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"blog aws lambda sqs 7\"\n        title=\"blog aws lambda sqs 7\"\n        src=\"/static/7c84dcffcf1c9b4f5456154bbcf2f1ff/01e7c/blog-aws-lambda-sqs-7.png\"\n        srcset=\"/static/7c84dcffcf1c9b4f5456154bbcf2f1ff/01e7c/blog-aws-lambda-sqs-7.png 512w\"\n        sizes=\"(max-width: 512px) 100vw, 512px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n  .dark-default-dark {\n    background-color: #1E1E1E;\n    color: #D4D4D4;\n  }\n  .dark-default-dark .mtk4 { color: #569CD6; }\n  .dark-default-dark .mtk1 { color: #D4D4D4; }\n  .dark-default-dark .mtk12 { color: #9CDCFE; }\n  .dark-default-dark .mtk11 { color: #DCDCAA; }\n  .dark-default-dark .mtk8 { color: #CE9178; }\n  .dark-default-dark .mtk17 { color: #808080; }\n  .dark-default-dark .mtk10 { color: #4EC9B0; }\n</style>","frontmatter":{"date":"February 13, 2020","updated_date":null,"title":"Working with AWS Lambda and SQS","tags":["Engineering","General"],"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":2.127659574468085,"src":"/static/770c89c93d5798dacecb6b81d79b6c00/509ce/blog-aws-lambda.png","srcSet":"/static/770c89c93d5798dacecb6b81d79b6c00/69585/blog-aws-lambda.png 200w,\n/static/770c89c93d5798dacecb6b81d79b6c00/497c6/blog-aws-lambda.png 400w,\n/static/770c89c93d5798dacecb6b81d79b6c00/509ce/blog-aws-lambda.png 448w","sizes":"(max-width: 448px) 100vw, 448px"}}},"author":{"id":"Team LoginRadius","github":"LoginRadius","avatar":null}}}}]}},"pageContext":{"tag":"General"}},"staticQueryHashes":["1171199041","1384082988","2100481360","23180105","528864852"]}