Repository files navigation

serverless localhost Build Status

Host any API Gateway triggerable AWS Lambda in any Lambda runtime locally with no changes to your serverless application

Overview

Goals

  • πŸ‘©β€πŸ’» Shorten AWS Lambda development feedback loops
  • ⚑ Integrate with your existing serverless application
  • ⛱️ Work with all AWS Lambda runtimes out of the box
  • πŸ‘ Leverage lambci project for undifferentiated heaving lifting

πŸ“¦ Install

πŸ’‘ This plugin relies on Docker to emulate AWS Lambda runtimes. If you don't have docker installed, you can learn how to do so here

Inside a serverless project directory, run the following

$ npm i -D softprops/serverless-localhost

Add serverless-localhost to your serverless.yml file's list of plugins

service: demoprovider:
name: awsruntime: xxxplugins:
- serverless-localhostfunctions:
test:
handler: foo.barevents:
- http:
path: /method: GET

🀸 Usage

Run the following in your terminal

$ npx serverless localhost

This will start a server accessible via http://localhost:3000

To start a server on an alternative port, use the -p flag providing the desired port to listen on

$ npx serverless localhost -p 3001

🌏 Environment variables

Environment variables defined in your serverless.yml will be made available inside the localhost server. If your serverless.yml is configured to source their values from the deployment env, i.e. ${env.FOO,''} just export their values before starting the server.

$ FOO=bar npx serverless localhost

πŸ‘©β€πŸ”¬ Debugging applications

Serverless localhost supports running a subset of lambda runtimes in debugging mode by starting the server with the debug flag -d providing a port for the runtimes debugger to listen on.

$ npx serverless localhost -d 5858

πŸ’‘ Debugging is supported for the following lambda runtimes nodejs, nodejs4.3, nodejs6.10, nodejs8.10, java8, python2.7, python3.6, dotnetcore2.0, dotnetcore2.1

πŸ”¬ Debugging the plugin

If you find your having a problem with this plugin, you can run this plugin's command with the DEBUG environment variable set to "localhost"

$ DEBUG=localhost npx serverless localhost

Extending

The serverless plugin model lets you easily integrate custom workflows with serverless localhost through "hooking" into plugin lifecycle events.

The erverless localhost plugin emits a localhost:start event for which you can hook into the following lifecycle events some pre/post logic

  • before:localhost:start
  • after:localhost:start

Comparisons

API Gateway

The target usecase for serverless localhost is to emulate API Gateway triggers locally to facilitate faster feedback loops. The emulation is currently limited to the LAMBDA-PROXY integration, a flavor of integration where API Gateway passes the entire request to your lambda. This is the most common (and default) use in the serverless community. As such its the focus of this plugin.

This plugins commitment is based on an as-needed/best-effort model. It is not a perfect emulation and as emulation features are needed they are provided on a best effort basis. The best emulation you will get is no emulation.

Serverless offline

Runtimes

serverless offline is another awesome serverless plugin which for a long time only focused on the nodejs lambda runtime, it recently added support for Python and Ruby. It's a more mature as its been around for longer but takes a different approach to emulation. It tries to implement much of the runtime itself. As a result its slow and sometimes reluctant to support other runtimes.

Serverless localhost takes an alternate approach which enables it to support all runtimes, more faithfully out of the box but leveraging lambci projects docker images which are exported copies of the actually AWS Lambda runtimes. What you get here is as close as possible emulation of your deployment target and out of the box support for all AWS Lambda runtimes which no effort on behalf of this plugin's contributors.

Integrations

Serverless offline supports both API Gateway LAMBDA and LAMBDA-PROXY integrations. As mentioned above, this plugins focus on the more common and default of serverless framework, LAMBDA-PROXY. It's possible LAMBDA integration will be added in the the future but only if there is sufficient demand.

πŸ‘― Contributing

Contributions are welcome. Please read our contributing doc for more information.


🚧 Planned work

Please not this road is still being paved. The following items are planned work ahead

  • add support for binary requests and responses
  • debug mod for runtimes

Doug Tangren (softprops) 2019

About

No description, website, or topics provided.

Resources

Contributing

Stars

9 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

serverless localhost Build Status

Host any API Gateway triggerable AWS Lambda in any Lambda runtime locally with no changes to your serverless application

Overview

Goals

  • πŸ‘©β€πŸ’» Shorten AWS Lambda development feedback loops
  • ⚑ Integrate with your existing serverless application
  • ⛱️ Work with all AWS Lambda runtimes out of the box
  • πŸ‘ Leverage lambci project for undifferentiated heaving lifting

πŸ“¦ Install

πŸ’‘ This plugin relies on Docker to emulate AWS Lambda runtimes. If you don't have docker installed, you can learn how to do so here

Inside a serverless project directory, run the following

$ npm i -D softprops/serverless-localhost

Add serverless-localhost to your serverless.yml file's list of plugins

service: demoprovider:
name: awsruntime: xxxplugins:
- serverless-localhostfunctions:
test:
handler: foo.barevents:
- http:
path: /method: GET

🀸 Usage

Run the following in your terminal

$ npx serverless localhost

This will start a server accessible via http://localhost:3000

To start a server on an alternative port, use the -p flag providing the desired port to listen on

$ npx serverless localhost -p 3001

🌏 Environment variables

Environment variables defined in your serverless.yml will be made available inside the localhost server. If your serverless.yml is configured to source their values from the deployment env, i.e. ${env.FOO,''} just export their values before starting the server.

$ FOO=bar npx serverless localhost

πŸ‘©β€πŸ”¬ Debugging applications

Serverless localhost supports running a subset of lambda runtimes in debugging mode by starting the server with the debug flag -d providing a port for the runtimes debugger to listen on.

$ npx serverless localhost -d 5858

πŸ’‘ Debugging is supported for the following lambda runtimes nodejs, nodejs4.3, nodejs6.10, nodejs8.10, java8, python2.7, python3.6, dotnetcore2.0, dotnetcore2.1

πŸ”¬ Debugging the plugin

If you find your having a problem with this plugin, you can run this plugin's command with the DEBUG environment variable set to "localhost"

$ DEBUG=localhost npx serverless localhost

Extending

The serverless plugin model lets you easily integrate custom workflows with serverless localhost through "hooking" into plugin lifecycle events.

The erverless localhost plugin emits a localhost:start event for which you can hook into the following lifecycle events some pre/post logic

  • before:localhost:start
  • after:localhost:start

Comparisons

API Gateway

The target usecase for serverless localhost is to emulate API Gateway triggers locally to facilitate faster feedback loops. The emulation is currently limited to the LAMBDA-PROXY integration, a flavor of integration where API Gateway passes the entire request to your lambda. This is the most common (and default) use in the serverless community. As such its the focus of this plugin.

This plugins commitment is based on an as-needed/best-effort model. It is not a perfect emulation and as emulation features are needed they are provided on a best effort basis. The best emulation you will get is no emulation.

Serverless offline

Runtimes

serverless offline is another awesome serverless plugin which for a long time only focused on the nodejs lambda runtime, it recently added support for Python and Ruby. It's a more mature as its been around for longer but takes a different approach to emulation. It tries to implement much of the runtime itself. As a result its slow and sometimes reluctant to support other runtimes.

Serverless localhost takes an alternate approach which enables it to support all runtimes, more faithfully out of the box but leveraging lambci projects docker images which are exported copies of the actually AWS Lambda runtimes. What you get here is as close as possible emulation of your deployment target and out of the box support for all AWS Lambda runtimes which no effort on behalf of this plugin's contributors.

Integrations

Serverless offline supports both API Gateway LAMBDA and LAMBDA-PROXY integrations. As mentioned above, this plugins focus on the more common and default of serverless framework, LAMBDA-PROXY. It's possible LAMBDA integration will be added in the the future but only if there is sufficient demand.

πŸ‘― Contributing

Contributions are welcome. Please read our contributing doc for more information.


🚧 Planned work

Please not this road is still being paved. The following items are planned work ahead

  • add support for binary requests and responses
  • debug mod for runtimes

Doug Tangren (softprops) 2019

About

No description, website, or topics provided.

Resources

Contributing

Stars

9 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

serverless localhost Build Status

Host any API Gateway triggerable AWS Lambda in any Lambda runtime locally with no changes to your serverless application

Overview

Goals

  • πŸ‘©β€πŸ’» Shorten AWS Lambda development feedback loops
  • ⚑ Integrate with your existing serverless application
  • ⛱️ Work with all AWS Lambda runtimes out of the box
  • πŸ‘ Leverage lambci project for undifferentiated heaving lifting

πŸ“¦ Install

πŸ’‘ This plugin relies on Docker to emulate AWS Lambda runtimes. If you don't have docker installed, you can learn how to do so here

Inside a serverless project directory, run the following

$ npm i -D softprops/serverless-localhost

Add serverless-localhost to your serverless.yml file's list of plugins

service: demoprovider:
name: awsruntime: xxxplugins:
- serverless-localhostfunctions:
test:
handler: foo.barevents:
- http:
path: /method: GET

🀸 Usage

Run the following in your terminal

$ npx serverless localhost

This will start a server accessible via http://localhost:3000

To start a server on an alternative port, use the -p flag providing the desired port to listen on

$ npx serverless localhost -p 3001

🌏 Environment variables

Environment variables defined in your serverless.yml will be made available inside the localhost server. If your serverless.yml is configured to source their values from the deployment env, i.e. ${env.FOO,''} just export their values before starting the server.

$ FOO=bar npx serverless localhost

πŸ‘©β€πŸ”¬ Debugging applications

Serverless localhost supports running a subset of lambda runtimes in debugging mode by starting the server with the debug flag -d providing a port for the runtimes debugger to listen on.

$ npx serverless localhost -d 5858

πŸ’‘ Debugging is supported for the following lambda runtimes nodejs, nodejs4.3, nodejs6.10, nodejs8.10, java8, python2.7, python3.6, dotnetcore2.0, dotnetcore2.1

πŸ”¬ Debugging the plugin

If you find your having a problem with this plugin, you can run this plugin's command with the DEBUG environment variable set to "localhost"

$ DEBUG=localhost npx serverless localhost

Extending

The serverless plugin model lets you easily integrate custom workflows with serverless localhost through "hooking" into plugin lifecycle events.

The erverless localhost plugin emits a localhost:start event for which you can hook into the following lifecycle events some pre/post logic

  • before:localhost:start
  • after:localhost:start

Comparisons

API Gateway

The target usecase for serverless localhost is to emulate API Gateway triggers locally to facilitate faster feedback loops. The emulation is currently limited to the LAMBDA-PROXY integration, a flavor of integration where API Gateway passes the entire request to your lambda. This is the most common (and default) use in the serverless community. As such its the focus of this plugin.

This plugins commitment is based on an as-needed/best-effort model. It is not a perfect emulation and as emulation features are needed they are provided on a best effort basis. The best emulation you will get is no emulation.

Serverless offline

Runtimes

serverless offline is another awesome serverless plugin which for a long time only focused on the nodejs lambda runtime, it recently added support for Python and Ruby. It's a more mature as its been around for longer but takes a different approach to emulation. It tries to implement much of the runtime itself. As a result its slow and sometimes reluctant to support other runtimes.

Serverless localhost takes an alternate approach which enables it to support all runtimes, more faithfully out of the box but leveraging lambci projects docker images which are exported copies of the actually AWS Lambda runtimes. What you get here is as close as possible emulation of your deployment target and out of the box support for all AWS Lambda runtimes which no effort on behalf of this plugin's contributors.

Integrations

Serverless offline supports both API Gateway LAMBDA and LAMBDA-PROXY integrations. As mentioned above, this plugins focus on the more common and default of serverless framework, LAMBDA-PROXY. It's possible LAMBDA integration will be added in the the future but only if there is sufficient demand.

πŸ‘― Contributing

Contributions are welcome. Please read our contributing doc for more information.


🚧 Planned work

Please not this road is still being paved. The following items are planned work ahead

  • add support for binary requests and responses
  • debug mod for runtimes

Doug Tangren (softprops) 2019

About

No description, website, or topics provided.

Resources

Contributing

Stars

9 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

serverless localhost Build Status

Host any API Gateway triggerable AWS Lambda in any Lambda runtime locally with no changes to your serverless application

Overview

Goals

  • πŸ‘©β€πŸ’» Shorten AWS Lambda development feedback loops
  • ⚑ Integrate with your existing serverless application
  • ⛱️ Work with all AWS Lambda runtimes out of the box
  • πŸ‘ Leverage lambci project for undifferentiated heaving lifting

πŸ“¦ Install

πŸ’‘ This plugin relies on Docker to emulate AWS Lambda runtimes. If you don't have docker installed, you can learn how to do so here

Inside a serverless project directory, run the following

$ npm i -D softprops/serverless-localhost

Add serverless-localhost to your serverless.yml file's list of plugins

service: demoprovider:
name: awsruntime: xxxplugins:
- serverless-localhostfunctions:
test:
handler: foo.barevents:
- http:
path: /method: GET

🀸 Usage

Run the following in your terminal

$ npx serverless localhost

This will start a server accessible via http://localhost:3000

To start a server on an alternative port, use the -p flag providing the desired port to listen on

$ npx serverless localhost -p 3001

🌏 Environment variables

Environment variables defined in your serverless.yml will be made available inside the localhost server. If your serverless.yml is configured to source their values from the deployment env, i.e. ${env.FOO,''} just export their values before starting the server.

$ FOO=bar npx serverless localhost

πŸ‘©β€πŸ”¬ Debugging applications

Serverless localhost supports running a subset of lambda runtimes in debugging mode by starting the server with the debug flag -d providing a port for the runtimes debugger to listen on.

$ npx serverless localhost -d 5858

πŸ’‘ Debugging is supported for the following lambda runtimes nodejs, nodejs4.3, nodejs6.10, nodejs8.10, java8, python2.7, python3.6, dotnetcore2.0, dotnetcore2.1

πŸ”¬ Debugging the plugin

If you find your having a problem with this plugin, you can run this plugin's command with the DEBUG environment variable set to "localhost"

$ DEBUG=localhost npx serverless localhost

Extending

The serverless plugin model lets you easily integrate custom workflows with serverless localhost through "hooking" into plugin lifecycle events.

The erverless localhost plugin emits a localhost:start event for which you can hook into the following lifecycle events some pre/post logic

  • before:localhost:start
  • after:localhost:start

Comparisons

API Gateway

The target usecase for serverless localhost is to emulate API Gateway triggers locally to facilitate faster feedback loops. The emulation is currently limited to the LAMBDA-PROXY integration, a flavor of integration where API Gateway passes the entire request to your lambda. This is the most common (and default) use in the serverless community. As such its the focus of this plugin.

This plugins commitment is based on an as-needed/best-effort model. It is not a perfect emulation and as emulation features are needed they are provided on a best effort basis. The best emulation you will get is no emulation.

Serverless offline

Runtimes

serverless offline is another awesome serverless plugin which for a long time only focused on the nodejs lambda runtime, it recently added support for Python and Ruby. It's a more mature as its been around for longer but takes a different approach to emulation. It tries to implement much of the runtime itself. As a result its slow and sometimes reluctant to support other runtimes.

Serverless localhost takes an alternate approach which enables it to support all runtimes, more faithfully out of the box but leveraging lambci projects docker images which are exported copies of the actually AWS Lambda runtimes. What you get here is as close as possible emulation of your deployment target and out of the box support for all AWS Lambda runtimes which no effort on behalf of this plugin's contributors.

Integrations

Serverless offline supports both API Gateway LAMBDA and LAMBDA-PROXY integrations. As mentioned above, this plugins focus on the more common and default of serverless framework, LAMBDA-PROXY. It's possible LAMBDA integration will be added in the the future but only if there is sufficient demand.

πŸ‘― Contributing

Contributions are welcome. Please read our contributing doc for more information.


🚧 Planned work

Please not this road is still being paved. The following items are planned work ahead

  • add support for binary requests and responses
  • debug mod for runtimes

Doug Tangren (softprops) 2019

About

No description, website, or topics provided.

Resources

Contributing

Stars

9 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

serverless localhost Build Status

Host any API Gateway triggerable AWS Lambda in any Lambda runtime locally with no changes to your serverless application

Overview

Goals

  • πŸ‘©β€πŸ’» Shorten AWS Lambda development feedback loops
  • ⚑ Integrate with your existing serverless application
  • ⛱️ Work with all AWS Lambda runtimes out of the box
  • πŸ‘ Leverage lambci project for undifferentiated heaving lifting

πŸ“¦ Install

πŸ’‘ This plugin relies on Docker to emulate AWS Lambda runtimes. If you don't have docker installed, you can learn how to do so here

Inside a serverless project directory, run the following

$ npm i -D softprops/serverless-localhost

Add serverless-localhost to your serverless.yml file's list of plugins

service: demoprovider:
name: awsruntime: xxxplugins:
- serverless-localhostfunctions:
test:
handler: foo.barevents:
- http:
path: /method: GET

🀸 Usage

Run the following in your terminal

$ npx serverless localhost

This will start a server accessible via http://localhost:3000

To start a server on an alternative port, use the -p flag providing the desired port to listen on

$ npx serverless localhost -p 3001

🌏 Environment variables

Environment variables defined in your serverless.yml will be made available inside the localhost server. If your serverless.yml is configured to source their values from the deployment env, i.e. ${env.FOO,''} just export their values before starting the server.

$ FOO=bar npx serverless localhost

πŸ‘©β€πŸ”¬ Debugging applications

Serverless localhost supports running a subset of lambda runtimes in debugging mode by starting the server with the debug flag -d providing a port for the runtimes debugger to listen on.

$ npx serverless localhost -d 5858

πŸ’‘ Debugging is supported for the following lambda runtimes nodejs, nodejs4.3, nodejs6.10, nodejs8.10, java8, python2.7, python3.6, dotnetcore2.0, dotnetcore2.1

πŸ”¬ Debugging the plugin

If you find your having a problem with this plugin, you can run this plugin's command with the DEBUG environment variable set to "localhost"

$ DEBUG=localhost npx serverless localhost

Extending

The serverless plugin model lets you easily integrate custom workflows with serverless localhost through "hooking" into plugin lifecycle events.

The erverless localhost plugin emits a localhost:start event for which you can hook into the following lifecycle events some pre/post logic

  • before:localhost:start
  • after:localhost:start

Comparisons

API Gateway

The target usecase for serverless localhost is to emulate API Gateway triggers locally to facilitate faster feedback loops. The emulation is currently limited to the LAMBDA-PROXY integration, a flavor of integration where API Gateway passes the entire request to your lambda. This is the most common (and default) use in the serverless community. As such its the focus of this plugin.

This plugins commitment is based on an as-needed/best-effort model. It is not a perfect emulation and as emulation features are needed they are provided on a best effort basis. The best emulation you will get is no emulation.

Serverless offline

Runtimes

serverless offline is another awesome serverless plugin which for a long time only focused on the nodejs lambda runtime, it recently added support for Python and Ruby. It's a more mature as its been around for longer but takes a different approach to emulation. It tries to implement much of the runtime itself. As a result its slow and sometimes reluctant to support other runtimes.

Serverless localhost takes an alternate approach which enables it to support all runtimes, more faithfully out of the box but leveraging lambci projects docker images which are exported copies of the actually AWS Lambda runtimes. What you get here is as close as possible emulation of your deployment target and out of the box support for all AWS Lambda runtimes which no effort on behalf of this plugin's contributors.

Integrations

Serverless offline supports both API Gateway LAMBDA and LAMBDA-PROXY integrations. As mentioned above, this plugins focus on the more common and default of serverless framework, LAMBDA-PROXY. It's possible LAMBDA integration will be added in the the future but only if there is sufficient demand.

πŸ‘― Contributing

Contributions are welcome. Please read our contributing doc for more information.


🚧 Planned work

Please not this road is still being paved. The following items are planned work ahead

  • add support for binary requests and responses
  • debug mod for runtimes

Doug Tangren (softprops) 2019

About

No description, website, or topics provided.

Resources

Contributing

Stars

9 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

serverless localhost Build Status

Host any API Gateway triggerable AWS Lambda in any Lambda runtime locally with no changes to your serverless application

Overview

Goals

  • πŸ‘©β€πŸ’» Shorten AWS Lambda development feedback loops
  • ⚑ Integrate with your existing serverless application
  • ⛱️ Work with all AWS Lambda runtimes out of the box
  • πŸ‘ Leverage lambci project for undifferentiated heaving lifting

πŸ“¦ Install

πŸ’‘ This plugin relies on Docker to emulate AWS Lambda runtimes. If you don't have docker installed, you can learn how to do so here

Inside a serverless project directory, run the following

$ npm i -D softprops/serverless-localhost

Add serverless-localhost to your serverless.yml file's list of plugins

service: demoprovider:
name: awsruntime: xxxplugins:
- serverless-localhostfunctions:
test:
handler: foo.barevents:
- http:
path: /method: GET

🀸 Usage

Run the following in your terminal

$ npx serverless localhost

This will start a server accessible via http://localhost:3000

To start a server on an alternative port, use the -p flag providing the desired port to listen on

$ npx serverless localhost -p 3001

🌏 Environment variables

Environment variables defined in your serverless.yml will be made available inside the localhost server. If your serverless.yml is configured to source their values from the deployment env, i.e. ${env.FOO,''} just export their values before starting the server.

$ FOO=bar npx serverless localhost

πŸ‘©β€πŸ”¬ Debugging applications

Serverless localhost supports running a subset of lambda runtimes in debugging mode by starting the server with the debug flag -d providing a port for the runtimes debugger to listen on.

$ npx serverless localhost -d 5858

πŸ’‘ Debugging is supported for the following lambda runtimes nodejs, nodejs4.3, nodejs6.10, nodejs8.10, java8, python2.7, python3.6, dotnetcore2.0, dotnetcore2.1

πŸ”¬ Debugging the plugin

If you find your having a problem with this plugin, you can run this plugin's command with the DEBUG environment variable set to "localhost"

$ DEBUG=localhost npx serverless localhost

Extending

The serverless plugin model lets you easily integrate custom workflows with serverless localhost through "hooking" into plugin lifecycle events.

The erverless localhost plugin emits a localhost:start event for which you can hook into the following lifecycle events some pre/post logic

  • before:localhost:start
  • after:localhost:start

Comparisons

API Gateway

The target usecase for serverless localhost is to emulate API Gateway triggers locally to facilitate faster feedback loops. The emulation is currently limited to the LAMBDA-PROXY integration, a flavor of integration where API Gateway passes the entire request to your lambda. This is the most common (and default) use in the serverless community. As such its the focus of this plugin.

This plugins commitment is based on an as-needed/best-effort model. It is not a perfect emulation and as emulation features are needed they are provided on a best effort basis. The best emulation you will get is no emulation.

Serverless offline

Runtimes

serverless offline is another awesome serverless plugin which for a long time only focused on the nodejs lambda runtime, it recently added support for Python and Ruby. It's a more mature as its been around for longer but takes a different approach to emulation. It tries to implement much of the runtime itself. As a result its slow and sometimes reluctant to support other runtimes.

Serverless localhost takes an alternate approach which enables it to support all runtimes, more faithfully out of the box but leveraging lambci projects docker images which are exported copies of the actually AWS Lambda runtimes. What you get here is as close as possible emulation of your deployment target and out of the box support for all AWS Lambda runtimes which no effort on behalf of this plugin's contributors.

Integrations

Serverless offline supports both API Gateway LAMBDA and LAMBDA-PROXY integrations. As mentioned above, this plugins focus on the more common and default of serverless framework, LAMBDA-PROXY. It's possible LAMBDA integration will be added in the the future but only if there is sufficient demand.

πŸ‘― Contributing

Contributions are welcome. Please read our contributing doc for more information.


🚧 Planned work

Please not this road is still being paved. The following items are planned work ahead

  • add support for binary requests and responses
  • debug mod for runtimes

Doug Tangren (softprops) 2019

About

No description, website, or topics provided.

Resources

Contributing

Stars

9 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

serverless localhost Build Status

Host any API Gateway triggerable AWS Lambda in any Lambda runtime locally with no changes to your serverless application

Overview

Goals

  • πŸ‘©β€πŸ’» Shorten AWS Lambda development feedback loops
  • ⚑ Integrate with your existing serverless application
  • ⛱️ Work with all AWS Lambda runtimes out of the box
  • πŸ‘ Leverage lambci project for undifferentiated heaving lifting

πŸ“¦ Install

πŸ’‘ This plugin relies on Docker to emulate AWS Lambda runtimes. If you don't have docker installed, you can learn how to do so here

Inside a serverless project directory, run the following

$ npm i -D softprops/serverless-localhost

Add serverless-localhost to your serverless.yml file's list of plugins

service: demoprovider:
name: awsruntime: xxxplugins:
- serverless-localhostfunctions:
test:
handler: foo.barevents:
- http:
path: /method: GET

🀸 Usage

Run the following in your terminal

$ npx serverless localhost

This will start a server accessible via http://localhost:3000

To start a server on an alternative port, use the -p flag providing the desired port to listen on

$ npx serverless localhost -p 3001

🌏 Environment variables

Environment variables defined in your serverless.yml will be made available inside the localhost server. If your serverless.yml is configured to source their values from the deployment env, i.e. ${env.FOO,''} just export their values before starting the server.

$ FOO=bar npx serverless localhost

πŸ‘©β€πŸ”¬ Debugging applications

Serverless localhost supports running a subset of lambda runtimes in debugging mode by starting the server with the debug flag -d providing a port for the runtimes debugger to listen on.

$ npx serverless localhost -d 5858

πŸ’‘ Debugging is supported for the following lambda runtimes nodejs, nodejs4.3, nodejs6.10, nodejs8.10, java8, python2.7, python3.6, dotnetcore2.0, dotnetcore2.1

πŸ”¬ Debugging the plugin

If you find your having a problem with this plugin, you can run this plugin's command with the DEBUG environment variable set to "localhost"

$ DEBUG=localhost npx serverless localhost

Extending

The serverless plugin model lets you easily integrate custom workflows with serverless localhost through "hooking" into plugin lifecycle events.

The erverless localhost plugin emits a localhost:start event for which you can hook into the following lifecycle events some pre/post logic

  • before:localhost:start
  • after:localhost:start

Comparisons

API Gateway

The target usecase for serverless localhost is to emulate API Gateway triggers locally to facilitate faster feedback loops. The emulation is currently limited to the LAMBDA-PROXY integration, a flavor of integration where API Gateway passes the entire request to your lambda. This is the most common (and default) use in the serverless community. As such its the focus of this plugin.

This plugins commitment is based on an as-needed/best-effort model. It is not a perfect emulation and as emulation features are needed they are provided on a best effort basis. The best emulation you will get is no emulation.

Serverless offline

Runtimes

serverless offline is another awesome serverless plugin which for a long time only focused on the nodejs lambda runtime, it recently added support for Python and Ruby. It's a more mature as its been around for longer but takes a different approach to emulation. It tries to implement much of the runtime itself. As a result its slow and sometimes reluctant to support other runtimes.

Serverless localhost takes an alternate approach which enables it to support all runtimes, more faithfully out of the box but leveraging lambci projects docker images which are exported copies of the actually AWS Lambda runtimes. What you get here is as close as possible emulation of your deployment target and out of the box support for all AWS Lambda runtimes which no effort on behalf of this plugin's contributors.

Integrations

Serverless offline supports both API Gateway LAMBDA and LAMBDA-PROXY integrations. As mentioned above, this plugins focus on the more common and default of serverless framework, LAMBDA-PROXY. It's possible LAMBDA integration will be added in the the future but only if there is sufficient demand.

πŸ‘― Contributing

Contributions are welcome. Please read our contributing doc for more information.


🚧 Planned work

Please not this road is still being paved. The following items are planned work ahead

  • add support for binary requests and responses
  • debug mod for runtimes

Doug Tangren (softprops) 2019

About

No description, website, or topics provided.

Resources

Contributing

Stars

9 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

serverless localhost Build Status

Host any API Gateway triggerable AWS Lambda in any Lambda runtime locally with no changes to your serverless application

Overview

Goals

  • πŸ‘©β€πŸ’» Shorten AWS Lambda development feedback loops
  • ⚑ Integrate with your existing serverless application
  • ⛱️ Work with all AWS Lambda runtimes out of the box
  • πŸ‘ Leverage lambci project for undifferentiated heaving lifting

πŸ“¦ Install

πŸ’‘ This plugin relies on Docker to emulate AWS Lambda runtimes. If you don't have docker installed, you can learn how to do so here

Inside a serverless project directory, run the following

$ npm i -D softprops/serverless-localhost

Add serverless-localhost to your serverless.yml file's list of plugins

service: demoprovider:
name: awsruntime: xxxplugins:
- serverless-localhostfunctions:
test:
handler: foo.barevents:
- http:
path: /method: GET

🀸 Usage

Run the following in your terminal

$ npx serverless localhost

This will start a server accessible via http://localhost:3000

To start a server on an alternative port, use the -p flag providing the desired port to listen on

$ npx serverless localhost -p 3001

🌏 Environment variables

Environment variables defined in your serverless.yml will be made available inside the localhost server. If your serverless.yml is configured to source their values from the deployment env, i.e. ${env.FOO,''} just export their values before starting the server.

$ FOO=bar npx serverless localhost

πŸ‘©β€πŸ”¬ Debugging applications

Serverless localhost supports running a subset of lambda runtimes in debugging mode by starting the server with the debug flag -d providing a port for the runtimes debugger to listen on.

$ npx serverless localhost -d 5858

πŸ’‘ Debugging is supported for the following lambda runtimes nodejs, nodejs4.3, nodejs6.10, nodejs8.10, java8, python2.7, python3.6, dotnetcore2.0, dotnetcore2.1

πŸ”¬ Debugging the plugin

If you find your having a problem with this plugin, you can run this plugin's command with the DEBUG environment variable set to "localhost"

$ DEBUG=localhost npx serverless localhost

Extending

The serverless plugin model lets you easily integrate custom workflows with serverless localhost through "hooking" into plugin lifecycle events.

The erverless localhost plugin emits a localhost:start event for which you can hook into the following lifecycle events some pre/post logic

  • before:localhost:start
  • after:localhost:start

Comparisons

API Gateway

The target usecase for serverless localhost is to emulate API Gateway triggers locally to facilitate faster feedback loops. The emulation is currently limited to the LAMBDA-PROXY integration, a flavor of integration where API Gateway passes the entire request to your lambda. This is the most common (and default) use in the serverless community. As such its the focus of this plugin.

This plugins commitment is based on an as-needed/best-effort model. It is not a perfect emulation and as emulation features are needed they are provided on a best effort basis. The best emulation you will get is no emulation.

Serverless offline

Runtimes

serverless offline is another awesome serverless plugin which for a long time only focused on the nodejs lambda runtime, it recently added support for Python and Ruby. It's a more mature as its been around for longer but takes a different approach to emulation. It tries to implement much of the runtime itself. As a result its slow and sometimes reluctant to support other runtimes.

Serverless localhost takes an alternate approach which enables it to support all runtimes, more faithfully out of the box but leveraging lambci projects docker images which are exported copies of the actually AWS Lambda runtimes. What you get here is as close as possible emulation of your deployment target and out of the box support for all AWS Lambda runtimes which no effort on behalf of this plugin's contributors.

Integrations

Serverless offline supports both API Gateway LAMBDA and LAMBDA-PROXY integrations. As mentioned above, this plugins focus on the more common and default of serverless framework, LAMBDA-PROXY. It's possible LAMBDA integration will be added in the the future but only if there is sufficient demand.

πŸ‘― Contributing

Contributions are welcome. Please read our contributing doc for more information.


🚧 Planned work

Please not this road is still being paved. The following items are planned work ahead

  • add support for binary requests and responses
  • debug mod for runtimes

Doug Tangren (softprops) 2019

About

No description, website, or topics provided.

Resources

Contributing

Stars

9 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages