Anything related to the Serverless-Offline plugin for the Serverless framework.
Hi! My serverless app does some request template mapping to get the raw body received from a Stripe webhook (it needs the raw body for verification by signing). The request template mapping works in "real" API gateway in my dev environment. When running locally with serverless-offline, I'm getting an undefined event being passed to my lambda function. Here's how my config looks:
sessionCompletedStripeWebhook:
handler: src/session-completed-stripe-webhook/handler.sessionCompletedStripeWebhook
events:
- http:
path: /stripe/session-completed
method: post
cors: true
integration: lambda
request:
template:
application/json: '{ "rawStripeEvent" : "$util.escapeJavaScript($input.body).replaceAll("\\''", "''")", "stripeSignature" : "$input.params(''Stripe-Signature'')" }'
Does anyone know if serverless offline supports inline request template mapping config like this? In the README, there's a section on using velocity templates. I gave that a shot but it also didn't work, but without a good example I wasn't sure if I was doing it right.
Guys how to use vscode-debugger with serverless-offline? My current configurations(launch.json) is bellow,
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Serverless Offline",
"program": "${workspaceRoot}/node_modules/serverless/bin/serverless.js",
"args": [
"offline",
"--noTimeout",
"--dontPrintOutput",
"--stage=local",
"-P",
"4000",
"--aws-profile=#PROFILENAME#"
],
"sourceMaps": true,
"runtimeArgs": ["--lazy"],
"outFiles": ["${workspaceFolder}/**/services/user/build/**/*.js"],
"protocol": "inspector",
"runtimeExecutable": "node",
"env": {
"SLS_DEBUG": "*"
},
"windows": {
"program": "${workspaceRoot}\\node_modules\\serverless\\bin\\serverless.js"
}
}
]
}
it throws following error.
Serverless Error ---------------------------------------
node_modules/serverless/lib/classes/Error.js:12
node_modules/serverless/lib/classes/Error.js:12
ServerlessError: Serverless command "offline" not found. Did you mean "config"? Run "serverless help" for a list of all available commands.
Error --------------------------------------------------
Error: Cannot find module 'serverless-offline/src/functionHelper'
Require stack:
- /Users/bregard/cartoon-play-api/source/nodejs/.serverless_plugins/plugin-local-invoke.js
- /usr/local/Cellar/serverless/1.78.1/libexec/lib/node_modules/serverless/lib/classes/PluginManager.js
- /usr/local/Cellar/serverless/1.78.1/libexec/lib/node_modules/serverless/lib/Serverless.js
- /usr/local/Cellar/serverless/1.78.1/libexec/lib/node_modules/serverless/scripts/serverless.js
- /usr/local/Cellar/serverless/1.78.1/libexec/lib/node_modules/serverless/bin/serverless.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:957:15)
at Function.Module._load (internal/modules/cjs/loader.js:840:27)
at Module.require (internal/modules/cjs/loader.js:1019:19)
at require (internal/modules/cjs/helpers.js:77:18)
at Object.<anonymous> (/Users/bregard/cartoon-play-api/source/nodejs/.serverless_plugins/plugin-local-invoke.js:3:26)
at Module._compile (internal/modules/cjs/loader.js:1133:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1153:10)
at Module.load (internal/modules/cjs/loader.js:977:32)
at Function.Module._load (internal/modules/cjs/loader.js:877:14)
at Module.require (internal/modules/cjs/loader.js:1019:19)
at require (internal/modules/cjs/helpers.js:77:18)
at requireServicePlugin (/usr/local/Cellar/serverless/1.78.1/libexec/lib/node_modules/serverless/lib/classes/PluginManager.js:21:14)
at /usr/local/Cellar/serverless/1.78.1/libexec/lib/node_modules/serverless/lib/classes/PluginManager.js:133:20
at Array.map (<anonymous>)
at PluginManager.resolveServicePlugins (/usr/local/Cellar/serverless/1.78.1/libexec/lib/node_modules/serverless/lib/classes/PluginManager.js:130:8)
at PluginManager.loadAllPlugins (/usr/local/Cellar/serverless/1.78.1/libexec/lib/node_modules/serverless/lib/classes/PluginManager.js:117:15)
at /usr/local/Cellar/serverless/1.78.1/libexec/lib/node_modules/serverless/lib/Serverless.js:101:35
at tryCatcher (/usr/local/Cellar/serverless/1.78.1/libexec/lib/node_modules/serverless/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/usr/local/Cellar/serverless/1.78.1/libexec/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:547:31)
at Promise._settlePromise (/usr/local/Cellar/serverless/1.78.1/libexec/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:604:18)
at Promise._settlePromise0 (/usr/local/Cellar/serverless/1.78.1/libexec/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:649:10)
at Promise._settlePromises (/usr/local/Cellar/serverless/1.78.1/libexec/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:729:18)
at Promise._fulfill (/usr/local/Cellar/serverless/1.78.1/libexec/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:673:18)
at Promise._settlePromise (/usr/local/Cellar/serverless/1.78.1/libexec/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:617:21)
at Promise._settlePromise0 (/usr/local/Cellar/serverless/1.78.1/libexec/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:649:10)
at Promise._settlePromises (/usr/local/Cellar/serverless/1.78.1/libexec/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:729:18)
at Promise._fulfill (/usr/local/Cellar/serverless/1.78.1/libexec/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:673:18)
at Promise._resolveCallback (/usr/local/Cellar/serverless/1.78.1/libexec/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:466:57)
at Promise._settlePromiseFromHandler (/usr/local/Cellar/serverless/1.78.1/libexec/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:559:17)
at Promise._settlePromise (/usr/local/Cellar/server
Contributing
section of the README
private: true
on http events to make serverless-offline
to generate an print out the x-api-key anymore. Was that done on purpose and I'm just missing something or it's a regression that I can help to patch up?
hi!
I'm using serverless-offline 6.5.0 in my project, and want to test my functions which don't have an HTTP events with invocation endpoint (via aws-cli).
I remember when it was 5.10.0, the serverless-offline plugin just gave me invocation endpoint for all the functions like below:
...
Serverless: Routes for helloworld:
Serverless: POST /{apiVersion}/functions/myservice-dev-helloworld/invocations
...
but with 6.5.0, it seems that the plugin isn't giving invocation endpoints unless the function has an HTTP event.
I don't find any breaking changes or migration guides related to this in v6,
but when I downgraded my serverless-offline to 5.10.0, it started to create endpoints, so I think it is a version problem.
does anyone know how to make it create invocation endpoint for all the functions with serverless-offline v6?
I have a serverless.yml with a collection of lambdas. There are currently some API Gateway triggered lambdas and one that is SQS triggered.
The environment is set at the provider level.
I'm running this using serverless-offline and for SQS I'm using the serverless-offline-sqs-esmq plugin.
The peculiar thing is, for the API Gateway triggered lambdas, all the process.env values are set correctly. However, when the SQS triggered lambda runs, none of the environment variables set in serverless.yml are available. Serverless is setting something as I can see that the IS_OFFLINE property is set, just none of my own specified ones.
There is no difference in config other than the event source for the two different types. I've also tried specifying the environment at the function level but this makes no difference.
Has anyone seen this or know what it could be?
Thanks
Hi,
I am new to Serverless.
I just want to know if there is any way around that we can create s3 buckets using serverless if else plugin.
What I am trying to achieve is that I want to create new s3 buckets as per Stage I gave in if else statement.
Fr example if script(serverless.yml) runs in production stage it should create different s3 bucket and if script runs in development stage then it should create different bucket according to if else statement.
Please let me know if there is any way around to achieve this.