re:Invent 2016: What’s New About AWS Lambda?

re:Invent news about AWS Lambda: we have already listed most of the AWS updates announced during the first and second keynote in Las Vegas. In this article, I’d like to focus on AWS Lambda.

The Serverless landscape will be evolving even faster during the next few months, and AWS is definitely contributing to the Serverless revolution.

Tim Wagner, general manager of both AWS Lambda and Amazon API Gateway, described the capabilities of a modern serverless platform. According to Wagner, such a platform should include a broad set of features and components, including a cloud logic layer, orchestration, and state management, responsive data sources, an application modeling framework, a developer ecosystem, integration libraries, security and access control, reliability and performance, and most of all, it must work on a global scale.

CI/CD for serverless applications

Continuous Integration and Continuous Delivery are finally much easier with the new native functionalities introduced this week.

Thanks to SAM (Serverless Application Model) and its integration in Amazon CloudFormation, Lambda’s Environment Variables and the new AWS CodeBuild, you can now achieve CI/CD with minimal effort.

SAM represents an open common language for describing the content of a serverless app. Since CloudFormation can speak this language, we finally have the tools to easily package and deploy Lambda-based applications.

CodeBuild, on the other hand, allows you to automate the building and testing process. As far as AWS Lambda is concerned, you will also be able to install and compile any additional dependencies of your functions without any manual installation and packaging. For example, you will run npm (for Node.js) or pip (for Python) in your CodeBuild buildspec file and dynamically bundle your code and dependencies together. Even more interesting, you can use your own Docker Image, in addition to all the other supported runtimes and the corresponding versions: Ubuntu base, Android, Java, Python, Ruby, Golang, and Node.js.
AWS CodeBuild
Also, by using AWS Lambda’s Environment Variables, you can easily update the runtime environment without redeploying your Function. However, variables are actually immutable and this won’t work unless you are using the $LATEST version.

During Tim Wagner’s session, we learned how to react to GitHub updates and prepare the new Function to be deployed with CodeBuild, and then automatically deploy with CloudFormation and SAM.

AWS Lambda Apps Diagnostics

AWS announced AWS X-Ray, a fully managed service for analyzing and debugging distributed apps. It’s only available in preview today, and AWS Lambda support will come soon as well.

This powerful new tool will allow you to better visualize your serverless app. You will gain visibility into events traveling through your services and be able to trace calls and timing from AWS Lambda functions to other AWS services.

With such a graphical and dynamic representation of your application topology, you can quickly find dependencies in your microservices and easily detect and diagnose missing events and throttles. Performance profiling will allow you to optimize each function and identify bottlenecks too.

New minor features

The following features didn’t gain as much attention during the official keynotes, but they will have an impact on your serverless apps:

  • AT_TIMESTAMP Kinesis iterator: You can start ready Kinesis Streams at any point in time, not only the newest or oldest records. This means that you can stop and start processing without rewinding or losing any data.
  • C# and .NET Core: The Lambda C# integration is based on netcoreapp 1.0 on Amazon Linux, with built-in logging and metrics. It already supports common AWS event types such as S3 and SNS, and it’s well integrated with Visual Studio.
  • Dead-letter queue (DLQ): A new and reliable end-to-end event processing solution. You can send all unprocessed events to an SQS queue or an SNS topic and always preserve events even if there is an issue in your code. This can be configured on a per-function level, for all async invokes including S3 and SNS events.
  • Aurora SQL triggers: You can now invoke AWS Lambda functions directly from your database code.
  • Mobile Hub Enterprise Connectors: You can now use built-in SaaS connectors for Salesforce, Microsoft Dynamics, Marketo, HubSpot, Zendesk, QuickBooks, etc. Each connector runs as an AWS Lambda function, and you will be able to integrate your own.
  • S3 per-object CloudTrail events: You can finally respond to GET events on Amazon S3 with Lambda.
  • CloudWatch metric-to-logs links
  • API Gateway pass-through mode: A new default mapping template will send the entire request to your Lambda function.
  • API Gateway binary encoding: API Gateway now supports binary payloads and responses. This allows you to have multimedia input and output such as images or compressed files.
  • API Gateway AWS Marketplace integration: You can now sell your APIs on the AWS Marketplace. This enables easy discovery and procurement for API consumers, API usage tracking, and automated billing.

New options for using AWS Lambda Functions

After the recent updates, there are a bunch of new places where you can run Amazo Lambda Functions. Here is a short list of new options:

  • Lambda Bots and Amazon Lex: You can build interactive experiences with both text and speech, integrating Facebook and Mobile Hub. Slack and Twilio integrations are coming soon.
  • Kinesis Firehose: Soon, you will be able to transform, audit, or aggregate Kinesis records on the fly with Lambda. It’s basically a new flexible buffering option, at scale.
  • AWS Snowball Edge: Every new Snowball device will come with both storage and processing capabilities so that you can run local AWS Lambda functions to pre-process your data before it’s  physically transferred to AWS.
  • AWS Greengrass: With Greengrass, (similar to Snowball Edge), you will be able to run local Lambda functions on potentially any device.
  • Lambda@Edge: You can now locally execute Lambda functions at each CloudFront Edge to achieve very low-latency request/response. Unfortunately, it’s only available in preview today, and currently limited to only Node.js, 50ms of maximum execution and headers transformation only. For now, you pay around $0.60 per million requests, with 4,000 free requests per month.

Choreographing Lambda Functions with AWS Step Functions

Since every function execution is supposed to be stateless, orchestrating and organizing multiple Lambda functions has been a tough task since day one.
So far, Lambda functions could only interact via hacks or complex workarounds that always required more work than it should. Here are a few strategies used until today:

  • Method call: This is the most naive method; you can definitely do better at modularity.
  • Chaining: You can always let a Lambda Function asynchronously call another function, but this makes error handling and retry policies very tricky to manage, if not impossible.
  • Databases: Storing the state somewhere is very easy to implement, but it always requires a lot of code and you risk deteriorating overall scalability.
  • Queues: Using queues is a cloud-native approach and could lead to good results, but it still requires too much work and retry policies are difficult to implement.

A mature functions orchestration system should allow you to scale out without state loss while dealing with errors and timeouts. It should be easy to build and operate with built-in auditing.

With these requirements in mind, AWS released AWS Step Functions.

This new service is backed by Amazon Simple Workflow under the hood. It is already available in 5 regions and it allows you to manage serverless applications state using visual workflows. Step Functions is designed to scale up to billions of invocations and it makes it easy to define finite-state machines (FSM) using a JSON DSL and with the help of an intuitive visual representation (boxes and arrows). You can also use this Ruby gem to validate your JSON FSM.
The service comes with a set of ready-to-use blueprints and it allows you to handle plenty of use cases:

  • Functions chaining: Create a sequence of functions and define custom input/output manipulation without changing each function’s source code.
  • Parallel execution: Run multiple functions in parallel and wait for their execution before proceeding to the next step.
  • Conditional selection: Execute specific functions based on data by defining a choice state that will check on the input variables and select the next function to run.
  • Retry policies: Define a Retry field with multiple handlers based on given conditions, the maximum number of attempts, retry intervals, and back off rages.
  • Try/catch/finally: Define a Catch field with multiple handlers based on given conditions and specify the next function to run.
  • Long-running tasks: You may need to run code for hours. Step Functions allows you to define a Poll step that will check the external execution status: either Success, Failure, or Heartbeat. You can bind polling to any activity, such as EC2 instances, containers, local servers, etc.

These screenshots represent two of the available blueprints: choice state and parallel execution.
AWS Step Functions
Technically, the state is persisted in JSON texts that pass from state to state. You can also configure each step with optional InputPath and ResultPath parameters, which allow you to pre-process the input and post-process the function output. This is a very powerful mechanism that allows you to implement generic functions and adapt the workflow to their input/output requirements in a very flexible way.

One final note about pricing: You will pay $0.025 per thousand state transitions. In other words, you will run 40,000 transitions with $1, plus the cost for AWS Lambda. The Free Tier includes 4,000 free transitions per month.

Conclusion

I am personally very excited about the amount of news and innovation announced by AWS at re:Invent 2016 regarding serverless computing. There is a whole new set of use cases, performance improvements, code refactoring, and cost optimizations to experiment with and evaluate.

I’m looking forward to seeing how the ecosystem will react, especially the wide range of automation tools and frameworks that might be able to simplify their internal logic and quickly add new functionalities. Serverless keeps changing how we think about application development, and things are getting better every month.

Let us know what you like or dislike about the recent news, and how it will affect your next project. I’m sure many of you had new ideas and application scenarios, and I can’t wait to hear about them.

Avatar

Written by

Alex Casalboni

Alex is a Software Engineer with a great passion for music and web technologies. He's experienced in web development and software design, with a particular focus on frontend and UX.


Related Posts

Joe Nemer
Joe Nemer
— April 2, 2020

Breaking News: All AWS Certification Exams Now Available Online

Remote proctoring for all AWS certifications Cloud Academy is an Advanced AWS Technology Partner, and we were are happy to announce all AWS certification exams are available online!  What does this mean for you? You can stay focused on your certification goal. Or you can start a cert...

Read more
  • AWS
  • AWS certification
  • AWS Certifications
Connie Benton
Connie Benton
— April 1, 2020

How To Build a Career with AWS Certifications

From Iaas and PaaS solutions to digital marketing, cloud computing reshapes the world of technology. As the influence of this technology grows, so does investment. Tens of billions of dollars are being spent on cloud computing-related services each year. This influx is continuing to inc...

Read more
  • AWS
  • Certifications
Vijayakumar Athithan
Vijayakumar Athithan
— March 27, 2020

What is Cognito in AWS?

Web applications usually allow a valid username and password combination for successful sign in to the application. Modern authentication flows incorporate more approaches to ensure user authentication. When using AWS, this is no exception, thanks to the abilities and features offered b...

Read more
  • AWS
  • AWS Cognito
  • Solutions Architect
Avatar
Andrew Larkin
— March 20, 2020

The 12 AWS Certifications: Which is Right for You and Your Team?

As companies increasingly shift workloads to the public cloud, cloud computing has moved from a nice-to-have to a core competency in the enterprise. This shift requires a new set of skills to design, deploy, and manage applications in cloud computing. As the market leader and most ma...

Read more
  • AWS
  • AWS Certifications
Alisha Reyes
Alisha Reyes
— March 17, 2020

Cloud Academy’s Blog Digest: How Do AWS Certifications Increase Your Employability, How to Become a Microsoft Certified Azure Data Engineer, and more

With everything going on right now, it's likely that the only thing you've been reading lately is related to the coronavirus pandemic. It's important to stay informed during these times, but it's also good to jump into something that can take your mind off of the current situation for j...

Read more
  • AWS
  • Azure
  • blog digest
  • Certifications
  • Cloud Academy
  • programming
  • Security
Avatar
Cloud Academy Team
— March 13, 2020

Which Certifications Should I Get?

As we mentioned in an earlier post, the old AWS slogan, “Cloud is the new normal” is indeed a reality today. Really, cloud has been the new normal for a while now and getting credentials has become an increasingly effective way to quickly showcase your abilities to recruiters and compan...

Read more
  • AWS
  • Azure
  • Certifications
  • Cloud Computing
  • Google Cloud Platform
Alisha Reyes
Alisha Reyes
— March 7, 2020

New on Cloud Academy: Intro to GitOps; AWS Courses; Java, Python, Amazon Linux 2, Ubuntu, & Docker Playgrounds; and much more

New Lab Playgrounds This month, our Content Team released six new "playground labs." Our playground labs provide a safe and secure sandbox environment for you to explore your own ideas, follow along with Cloud Academy courses, or answer your own questions — all without having to instal...

Read more
  • AWS
  • Azure
  • gitops
  • Google Cloud Platform
  • lab playground
  • programming
Alisha Reyes
Alisha Reyes
— March 6, 2020

New on Cloud Academy: Intro to GitOps; AWS Courses; Java, Python, Amazon Linux 2, Ubuntu, & Docker Playgrounds; and much more

New Lab Playgrounds This month, our Content Team released six new "playground labs." Our playground labs provide a safe and secure sandbox environment for you to explore your own ideas, follow along with Cloud Academy courses, or answer your own questions — all without having to instal...

Read more
  • AWS
  • Azure
  • gitops
  • Google Cloud Platform
  • lab playground
  • programming
Patrick Navarro
Patrick Navarro
— March 4, 2020

AWS Certifications: How Do They Increase Your Employability and Progress Your Career?

AWS certifications are no walk in the park. They’re designed to validate in-depth, specialist knowledge and comprehensive experience, often requiring months of dedicated studying to earn even for those already working with the cloud platform. But the rewards that AWS professionals ca...

Read more
  • AWS
  • AWS certification
  • certification
Avatar
Chandan Patra
— February 21, 2020

Elasticsearch vs. CloudSearch: AWS Cloud Search Choices

Elasticsearch vs. CloudSearch: What's the main difference? Let's compare AWS-based cloud tools: Elasticsearch vs. CloudSearch. While both services use proven technologies, Elasticsearch is more popular, open source, and has a flexible API to use for customization; in comparison, CloudS...

Read more
  • AWS
  • Azure
  • cloudsearch
  • elasticsearch
Avatar
Andrew Larkin
— February 13, 2020

Cloud Academy Content Roadmap Updates

Welcome to our Q1 2020 roadmap. This is the content we plan to build over the next three months, between February 1 - and April 30, 2020. Let's look at some of our roadmap highlights. Atlassian Bamboo for CI/CD We had a lot of requests for practical guides on how to apply DevOps tool...

Read more
  • Artificial Intelligence
  • AWS
  • Azure
  • Docker
  • Google Cloud Platform
  • Kubernetes
  • Machine Learning
Alisha Reyes
Alisha Reyes
— February 7, 2020

New on Cloud Academy: Git Labs, CKA and CKAD Lab Challenges, AWS and Azure Learning Paths, AGILE, and Much More

We just kicked off our first Free Weekend of 2020. This means we've unlocked our Training Library for just 72 hours. Until Sunday at 11:59 pm (PST), you can get unlimited access to our industry-leading learning paths, courses, certification prep exams, and our most popular hands-on labs...

Read more
  • agile
  • AWS
  • Azure
  • Google Cloud Platform
  • Linux
  • OWASP
  • programming
  • red hat
  • scrum