diff --git a/deps/aws-lambda-cpp-0.2.7.tar.gz b/deps/aws-lambda-cpp-0.2.7.tar.gz
new file mode 100644
index 0000000..51ba1bc
Binary files /dev/null and b/deps/aws-lambda-cpp-0.2.7.tar.gz differ
diff --git a/deps/patches/aws-lambda-cpp-add-content-type.patch b/deps/patches/aws-lambda-cpp-add-content-type.patch
index 2e045ff..efdcc18 100644
--- a/deps/patches/aws-lambda-cpp-add-content-type.patch
+++ b/deps/patches/aws-lambda-cpp-add-content-type.patch
@@ -1,19 +1,3 @@
-diff --git a/include/aws/lambda-runtime/runtime.h b/include/aws/lambda-runtime/runtime.h
-index e14b804..cc1a789 100644
---- a/include/aws/lambda-runtime/runtime.h
-+++ b/include/aws/lambda-runtime/runtime.h
-@@ -56,6 +56,11 @@ struct invocation_request {
-      */
-     std::string function_arn;
- 
-+    /**
-+     * The Content-type of the current invocation.
-+     */
-+    std::string content_type;
-+
-     /**
-      * Function execution deadline counted in milliseconds since the Unix epoch.
-      */
 diff --git a/include/aws/http/response.h b/include/aws/http/response.h
 index 9b8cbda..be184c1 100644
 --- a/include/aws/http/response.h
@@ -23,7 +7,7 @@ index 9b8cbda..be184c1 100644
      inline void set_content_type(char const* ct);
      inline std::string const& get_body() const;
 +    inline std::string const& get_content_type() const;
-
+ 
  private:
      response_code m_response_code;
 @@ -137,6 +138,12 @@ inline std::string const& response::get_body() const
@@ -39,15 +23,31 @@ index 9b8cbda..be184c1 100644
  inline void response::add_header(std::string name, std::string const& value)
  {
      std::transform(name.begin(), name.end(), name.begin(), ::tolower);
+diff --git a/include/aws/lambda-runtime/runtime.h b/include/aws/lambda-runtime/runtime.h
+index de07878..7812ff6 100644
+--- a/include/aws/lambda-runtime/runtime.h
++++ b/include/aws/lambda-runtime/runtime.h
+@@ -56,6 +56,11 @@ struct invocation_request {
+      */
+     std::string function_arn;
+ 
++    /**
++     * The Content-type of the current invocation.
++     */
++    std::string content_type;
++
+     /**
+      * Function execution deadline counted in milliseconds since the Unix epoch.
+      */
 diff --git a/src/runtime.cpp b/src/runtime.cpp
-index 08d7014..1cbd6bb 100644
+index e0d5cac..383f9b5 100644
 --- a/src/runtime.cpp
 +++ b/src/runtime.cpp
-@@ -275,6 +275,7 @@ runtime::next_outcome runtime::get_next()
+@@ -271,6 +271,7 @@ runtime::next_outcome runtime::get_next()
      invocation_request req;
      req.payload = resp.get_body();
      req.request_id = resp.get_header(REQUEST_ID_HEADER);
 +    req.content_type = resp.get_content_type();
-
+ 
      if (resp.has_header(TRACE_ID_HEADER)) {
          req.xray_trace_id = resp.get_header(TRACE_ID_HEADER);
diff --git a/deps/patches/aws-lambda-cpp-add-xray-response.patch b/deps/patches/aws-lambda-cpp-add-xray-response.patch
index 253e468..8e00569 100644
--- a/deps/patches/aws-lambda-cpp-add-xray-response.patch
+++ b/deps/patches/aws-lambda-cpp-add-xray-response.patch
@@ -1,11 +1,11 @@
 diff --git a/include/aws/lambda-runtime/runtime.h b/include/aws/lambda-runtime/runtime.h
-index 0dc292c..be77d93 100644
+index 94e1e22..ee356ff 100644
 --- a/include/aws/lambda-runtime/runtime.h
 +++ b/include/aws/lambda-runtime/runtime.h
 @@ -85,6 +85,11 @@ private:
       */
      bool m_success;
-
+ 
 +    /**
 +     * The serialized XRay response header.
 +     */
@@ -28,7 +28,7 @@ index 0dc292c..be77d93 100644
 +        m_success(success),
 +        m_xray_response(xray_response)
 +        {}
-
+ 
      /**
       * Create a successful invocation response with the given payload and content-type.
 @@ -111,7 +118,7 @@ public:
@@ -37,7 +37,7 @@ index 0dc292c..be77d93 100644
       */
 -    static invocation_response failure(std::string const& error_message, std::string const& error_type);
 +    static invocation_response failure(std::string const& error_message, std::string const& error_type, std::string const& xray_response);
-
+ 
      /**
       * Get the MIME type of the payload.
 @@ -127,6 +134,11 @@ public:
@@ -50,23 +50,23 @@ index 0dc292c..be77d93 100644
 +    */
 +    std::string const& get_xray_response() const { return m_xray_response; }
  };
-
+ 
  struct no_result {
 diff --git a/src/runtime.cpp b/src/runtime.cpp
-index e2ee7cd..d895c4b 100644
+index 9175084..230ce6f 100644
 --- a/src/runtime.cpp
 +++ b/src/runtime.cpp
-@@ -337,6 +337,7 @@ runtime::post_outcome runtime::do_post(
+@@ -333,6 +333,7 @@ runtime::post_outcome runtime::do_post(
          headers = curl_slist_append(headers, ("content-type: " + handler_response.get_content_type()).c_str());
      }
-
+ 
 +    headers = curl_slist_append(headers, ("lambda-runtime-function-xray-error-cause: " + handler_response.get_xray_response()).c_str());
      headers = curl_slist_append(headers, "Expect:");
      headers = curl_slist_append(headers, "transfer-encoding:");
-     headers = curl_slist_append(headers, get_user_agent_header().c_str());
-@@ -511,13 +512,15 @@ invocation_response invocation_response::success(std::string const& payload, std
+     headers = curl_slist_append(headers, m_user_agent_header.c_str());
+@@ -507,13 +508,15 @@ invocation_response invocation_response::success(std::string const& payload, std
  }
-
+ 
  AWS_LAMBDA_RUNTIME_API
 -invocation_response invocation_response::failure(std::string const& error_message, std::string const& error_type)
 +invocation_response invocation_response::failure(std::string const& error_message, std::string const& error_type, std::string const& xray_response)
@@ -80,3 +80,4 @@ index e2ee7cd..d895c4b 100644
 +
      return r;
  }
+ 
diff --git a/deps/patches/aws-lambda-cpp-make-lto-optional.patch b/deps/patches/aws-lambda-cpp-make-lto-optional.patch
deleted file mode 100644
index 54f78d2..0000000
--- a/deps/patches/aws-lambda-cpp-make-lto-optional.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index eb8327f..e6eeda5 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -4,10 +4,9 @@ project(aws-lambda-runtime
-     VERSION 0.2.6
-     LANGUAGES CXX)
-
-+option(ENABLE_LTO "Enables link-time optimization, requires compiler support." ON)
- option(ENABLE_TESTS "Enables building the test project, requires AWS C++ SDK." OFF)
-
--include(CheckIPOSupported)
--
- add_library(${PROJECT_NAME}
-     "src/logging.cpp"
-     "src/runtime.cpp"
-@@ -23,11 +22,14 @@ target_include_directories(${PROJECT_NAME} PUBLIC
-     $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
-     $<INSTALL_INTERFACE:include>)
-
--check_ipo_supported(RESULT has_lto OUTPUT lto_check_output)
--if(has_lto)
--    set_property(TARGET ${PROJECT_NAME} PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
--else()
--    message(WARNING "Link-time optimization (LTO) is not supported: ${lto_check_output}")
-+if (ENABLE_LTO)
-+    include(CheckIPOSupported)
-+    check_ipo_supported(RESULT has_lto OUTPUT lto_check_output)
-+    if(has_lto)
-+        set_property(TARGET ${PROJECT_NAME} PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
-+    else()
-+        message(WARNING "Link-time optimization (LTO) is not supported: ${lto_check_output}")
-+    endif()
- endif()
-
- find_package(CURL REQUIRED)
diff --git a/deps/patches/aws-lambda-cpp-make-the-runtime-client-user-agent-overrideable.patch b/deps/patches/aws-lambda-cpp-make-the-runtime-client-user-agent-overrideable.patch
deleted file mode 100644
index 8be3552..0000000
--- a/deps/patches/aws-lambda-cpp-make-the-runtime-client-user-agent-overrideable.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From 846392515b2b0215902aaf7368651af196835f10 Mon Sep 17 00:00:00 2001
-From: Bryan Moffatt <bmoffatt@users.noreply.github.com>
-Date: Wed, 21 Oct 2020 12:42:37 -0700
-Subject: [PATCH] make the Runtime Interface Client's user agent overrideable (#106)
-
-* make the Runtime Interface Client's user agent overrideable
-
-* remove extra empty string
-
-* clang-format -i src/*
----
- include/aws/lambda-runtime/runtime.h |  2 ++
- src/runtime.cpp                      | 20 ++++++++------------
- 2 files changed, 10 insertions(+), 12 deletions(-)
-
-diff --git a/include/aws/lambda-runtime/runtime.h b/include/aws/lambda-runtime/runtime.h
-index 0dc292c..94e1e22 100644
---- a/include/aws/lambda-runtime/runtime.h
-+++ b/include/aws/lambda-runtime/runtime.h
-@@ -137,6 +137,7 @@ public:
-     using next_outcome = aws::lambda_runtime::outcome<invocation_request, aws::http::response_code>;
-     using post_outcome = aws::lambda_runtime::outcome<no_result, aws::http::response_code>;
- 
-+    runtime(std::string const& endpoint, std::string const& user_agent);
-     runtime(std::string const& endpoint);
-     ~runtime();
- 
-@@ -164,6 +165,7 @@ private:
-         invocation_response const& handler_response);
- 
- private:
-+    std::string const m_user_agent_header;
-     std::array<std::string const, 3> const m_endpoints;
-     CURL* const m_curl_handle;
- };
-diff --git a/src/runtime.cpp b/src/runtime.cpp
-index e2ee7cd..f6131a4 100644
---- a/src/runtime.cpp
-+++ b/src/runtime.cpp
-@@ -124,12 +124,6 @@ static size_t write_header(char* ptr, size_t size, size_t nmemb, void* userdata)
-     return size * nmemb;
- }
- 
--static std::string const& get_user_agent_header()
--{
--    static std::string user_agent = std::string("User-Agent: AWS_Lambda_Cpp/") + get_version();
--    return user_agent;
--}
--
- static size_t read_data(char* buffer, size_t size, size_t nitems, void* userdata)
- {
-     auto const limit = size * nitems;
-@@ -163,10 +157,12 @@ static int rt_curl_debug_callback(CURL* handle, curl_infotype type, char* data,
- }
- #endif
- 
--runtime::runtime(std::string const& endpoint)
--    : m_endpoints{{endpoint + "/2018-06-01/runtime/init/error",
--                   endpoint + "/2018-06-01/runtime/invocation/next",
--                   endpoint + "/2018-06-01/runtime/invocation/"}},
-+runtime::runtime(std::string const& endpoint) : runtime(endpoint, "AWS_Lambda_Cpp/" + std::string(get_version())) {}
-+
-+runtime::runtime(std::string const& endpoint, std::string const& user_agent)
-+    : m_user_agent_header("User-Agent: " + user_agent), m_endpoints{{endpoint + "/2018-06-01/runtime/init/error",
-+                                                                     endpoint + "/2018-06-01/runtime/invocation/next",
-+                                                                     endpoint + "/2018-06-01/runtime/invocation/"}},
-       m_curl_handle(curl_easy_init())
- {
-     if (!m_curl_handle) {
-@@ -234,7 +230,7 @@ runtime::next_outcome runtime::get_next()
-     curl_easy_setopt(m_curl_handle, CURLOPT_HEADERDATA, &resp);
- 
-     curl_slist* headers = nullptr;
--    headers = curl_slist_append(headers, get_user_agent_header().c_str());
-+    headers = curl_slist_append(headers, m_user_agent_header.c_str());
-     curl_easy_setopt(m_curl_handle, CURLOPT_HTTPHEADER, headers);
- 
-     logging::log_debug(LOG_TAG, "Making request to %s", m_endpoints[Endpoints::NEXT].c_str());
-@@ -343,7 +343,7 @@ runtime::post_outcome runtime::do_post(
-     headers = curl_slist_append(headers, ("lambda-runtime-function-xray-error-cause: " + xray_response).c_str());
-     headers = curl_slist_append(headers, "Expect:");
-     headers = curl_slist_append(headers, "transfer-encoding:");
--    headers = curl_slist_append(headers, get_user_agent_header().c_str());
-+    headers = curl_slist_append(headers, m_user_agent_header.c_str());
-
-     logging::log_debug(
-         LOG_TAG, "calculating content length... %s", ("content-length: " + std::to_string(payload.length())).c_str());
--- 
-2.25.2
-
diff --git a/deps/patches/aws-lambda-cpp-posting-init-errors.patch b/deps/patches/aws-lambda-cpp-posting-init-errors.patch
index 7635443..b6239d5 100644
--- a/deps/patches/aws-lambda-cpp-posting-init-errors.patch
+++ b/deps/patches/aws-lambda-cpp-posting-init-errors.patch
@@ -1,11 +1,11 @@
 diff --git a/include/aws/lambda-runtime/runtime.h b/include/aws/lambda-runtime/runtime.h
-index be77d93..9597272 100644
+index ee356ff..de07878 100644
 --- a/include/aws/lambda-runtime/runtime.h
 +++ b/include/aws/lambda-runtime/runtime.h
 @@ -67,28 +67,58 @@ struct invocation_request {
      inline std::chrono::milliseconds get_time_remaining() const;
  };
-
+ 
 -class invocation_response {
 -private:
 +class runtime_response {
@@ -15,20 +15,20 @@ index be77d93..9597272 100644
 +     * The response payload from the runtime.
       */
      std::string m_payload;
-
+ 
      /**
       * The MIME type of the payload.
 -     * This is always set to 'application/json' in unsuccessful invocations.
       */
      std::string m_content_type;
-
+ 
      /**
 -     * Flag to distinguish if the contents are for successful or unsuccessful invocations.
 +     * The serialized XRay response header.
       */
 -    bool m_success;
 +    std::string m_xray_response;
-
+ 
      /**
 -     * The serialized XRay response header.
 +     * Instantiate an empty response.
@@ -66,7 +66,7 @@ index be77d93..9597272 100644
 +     * Flag to distinguish if the contents are for successful or unsuccessful invocations.
 +     */
 +    bool m_success;
-
+ 
      /**
       * Instantiate an empty response. Used by the static functions 'success' and 'failure' to create a populated
 @@ -102,12 +132,10 @@ public:
@@ -83,13 +83,13 @@ index be77d93..9597272 100644
 +        : runtime_response(payload, content_type, xray_response), m_success(success)
 +    {
 +    }
-
+ 
      /**
       * Create a successful invocation response with the given payload and content-type.
 @@ -120,25 +148,10 @@ public:
       */
      static invocation_response failure(std::string const& error_message, std::string const& error_type, std::string const& xray_response);
-
+ 
 -    /**
 -     * Get the MIME type of the payload.
 -     */
@@ -110,12 +110,12 @@ index be77d93..9597272 100644
 -    */
 -    std::string const& get_xray_response() const { return m_xray_response; }
  };
-
+ 
  struct no_result {
-@@ -167,13 +180,19 @@ public:
+@@ -168,13 +181,19 @@ public:
       */
      post_outcome post_failure(std::string const& request_id, invocation_response const& handler_response);
-
+ 
 +    /**
 +     * Tells lambda that the runtime has failed during initialization.
 +     */
@@ -131,21 +131,21 @@ index be77d93..9597272 100644
 +        std::string const& content_type,
 +        std::string const& payload,
 +        std::string const& xray_response);
-
+ 
  private:
-     std::array<std::string const, 3> const m_endpoints;
+     std::string const m_user_agent_header;
 diff --git a/src/runtime.cpp b/src/runtime.cpp
-index d895c4b..659666e 100644
+index 230ce6f..e0d5cac 100644
 --- a/src/runtime.cpp
 +++ b/src/runtime.cpp
-@@ -311,37 +311,44 @@ runtime::next_outcome runtime::get_next()
+@@ -307,37 +307,44 @@ runtime::next_outcome runtime::get_next()
  runtime::post_outcome runtime::post_success(std::string const& request_id, invocation_response const& handler_response)
  {
      std::string const url = m_endpoints[Endpoints::RESULT] + request_id + "/response";
 -    return do_post(url, request_id, handler_response);
 +    return do_post(url, handler_response.get_content_type(), handler_response.get_payload(), handler_response.get_xray_response());
  }
-
+ 
  runtime::post_outcome runtime::post_failure(std::string const& request_id, invocation_response const& handler_response)
  {
      std::string const url = m_endpoints[Endpoints::RESULT] + request_id + "/error";
@@ -158,7 +158,7 @@ index d895c4b..659666e 100644
 +    std::string const url = m_endpoints[Endpoints::INIT];
 +    return do_post(url, init_error_response.get_content_type(), init_error_response.get_payload(), init_error_response.get_xray_response());
  }
-
+ 
  runtime::post_outcome runtime::do_post(
      std::string const& url,
 -    std::string const& request_id,
@@ -170,7 +170,7 @@ index d895c4b..659666e 100644
      set_curl_post_result_options();
      curl_easy_setopt(m_curl_handle, CURLOPT_URL, url.c_str());
      logging::log_info(LOG_TAG, "Making request to %s", url.c_str());
-
+ 
      curl_slist* headers = nullptr;
 -    if (handler_response.get_content_type().empty()) {
 +    if (content_type.empty()) {
@@ -180,18 +180,18 @@ index d895c4b..659666e 100644
 -        headers = curl_slist_append(headers, ("content-type: " + handler_response.get_content_type()).c_str());
 +        headers = curl_slist_append(headers, ("content-type: " + content_type).c_str());
      }
-
+ 
 -    headers = curl_slist_append(headers, ("lambda-runtime-function-xray-error-cause: " + handler_response.get_xray_response()).c_str());
 +    headers = curl_slist_append(headers, ("lambda-runtime-function-xray-error-cause: " + xray_response).c_str());
      headers = curl_slist_append(headers, "Expect:");
      headers = curl_slist_append(headers, "transfer-encoding:");
-     headers = curl_slist_append(headers, get_user_agent_header().c_str());
+     headers = curl_slist_append(headers, m_user_agent_header.c_str());
 -    auto const& payload = handler_response.get_payload();
 +
      logging::log_debug(
          LOG_TAG, "calculating content length... %s", ("content-length: " + std::to_string(payload.length())).c_str());
      headers = curl_slist_append(headers, ("content-length: " + std::to_string(payload.length())).c_str());
-@@ -358,10 +365,10 @@ runtime::post_outcome runtime::do_post(
+@@ -354,10 +361,10 @@ runtime::post_outcome runtime::do_post(
      if (curl_code != CURLE_OK) {
          logging::log_debug(
              LOG_TAG,
@@ -203,4 +203,4 @@ index d895c4b..659666e 100644
 +            url.c_str());
          return aws::http::response_code::REQUEST_NOT_MADE;
      }
-
+ 
diff --git a/deps/versions b/deps/versions
index 756a145..b5a8522 100644
--- a/deps/versions
+++ b/deps/versions
@@ -1,4 +1,4 @@
-AWS_LAMBDA_CPP_RELEASE=0.2.6
+AWS_LAMBDA_CPP_RELEASE=0.2.7
 CURL_MAJOR_VERSION=7
 CURL_MINOR_VERSION=83
 CURL_PATCH_VERSION=0
diff --git a/scripts/update_deps.sh b/scripts/update_deps.sh
index 4ec4ec1..9be6c6d 100755
--- a/scripts/update_deps.sh
+++ b/scripts/update_deps.sh
@@ -19,8 +19,6 @@ wget -c https://github.com/awslabs/aws-lambda-cpp/archive/v$AWS_LAMBDA_CPP_RELEA
   cd aws-lambda-cpp-$AWS_LAMBDA_CPP_RELEASE && \
     patch -p1 < ../patches/aws-lambda-cpp-add-xray-response.patch && \
     patch -p1 < ../patches/aws-lambda-cpp-posting-init-errors.patch && \
-    patch -p1 < ../patches/aws-lambda-cpp-make-the-runtime-client-user-agent-overrideable.patch && \
-    patch -p1 < ../patches/aws-lambda-cpp-make-lto-optional.patch && \
     patch -p1 < ../patches/aws-lambda-cpp-add-content-type.patch
 )