coorpacademy / serverless-plugins Goto Github PK
View Code? Open in Web Editor NEWCollection of serverless plugins :zap:
Collection of serverless plugins :zap:
"serverless": "^1.46.1",
"serverless-offline": "^5.7.2",
"serverless-offline-sqs": "^2.0.3",
Error --------------------------------------------------
Cannot find module 'serverless-offline/src/createLambdaContext'
For debugging logs, run again after setting the "SLS_DEBUG=*" environment variable.
Stack Trace --------------------------------------------
Error: Cannot find module 'serverless-offline/src/createLambdaContext'
at Function.Module._resolveFilename (module.js:548:15)
at Function.Module._load (module.js:475:25)
at Module.require (module.js:597:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (~/node_modules/serverless-offline-sqs/src/index.js:18:29)
at Module._compile (module.js:653:30)
at Object.Module._extensions..js (module.js:664:10)
at Module.load (module.js:566:32)
at tryModuleLoad (module.js:506:12)
at Function.Module._load (module.js:498:3)
at Module.require (module.js:597:17)
at require (internal/module.js:11:18)
at plugins.forEach (~/node_modules/serverless/lib/classes/PluginManager.js:105:24)
at Array.forEach (<anonymous>)
at PluginManager.loadPlugins (~/node_modules/serverless/lib/classes/PluginManager.js:101:13)
at PluginManager.loadServicePlugins (~/node_modules/serverless/lib/classes/PluginManager.js:156:10)
at PluginManager.loadAllPlugins (~/node_modules/serverless/lib/classes/PluginManager.js:96:10)
at pluginManager.loadConfigFile.then.then (~/node_modules/serverless/lib/Serverless.js:74:26)
From previous event:
at Serverless.init (~/node_modules/serverless/lib/Serverless.js:72:8)
at initializeErrorReporter.then (~/node_modules/serverless/bin/serverless:42:21)
at runCallback (timers.js:810:20)
at tryOnImmediate (timers.js:768:5)
at processImmediate [as _immediateCallback] (timers.js:745:5)
From previous event:
at ~/node_modules/serverless/bin/serverless:28:46
at Object.<anonymous> (~/node_modules/serverless/bin/serverless:65:4)
at Module._compile (module.js:653:30)
at Object.Module._extensions..js (module.js:664:10)
at Module.load (module.js:566:32)
at tryModuleLoad (module.js:506:12)
at Function.Module._load (module.js:498:3)
at Function.Module.runMain (module.js:694:10)
at startup (bootstrap_node.js:204:16)
at bootstrap_node.js:625:3
Get Support --------------------------------------------
Docs: docs.serverless.com
Bugs: github.com/serverless/serverless/issues
Issues: forum.serverless.com
Your Environment Information ---------------------------
OS: darwin
Node Version: 8.12.0
Serverless Version: 1.46.1
I cannot use the plugin with my current setup, it produce an error:
2018-12-20 15:37:10.016:WARN:oejs.AbstractHttpConnection:/
java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
at com.amazonaws.services.dynamodbv2.local.shared.access.ShardIterator.encodeShardIterator(ShardIterator.java:64)
at com.amazonaws.services.dynamodbv2.local.shared.access.ShardIterator.toString(ShardIterator.java:53)
at com.amazonaws.services.dynamodbv2.local.shared.access.LocalDynamoDBStreamsClient.getShardIterator(LocalDynamoDBStreamsClient.java:457)
at com.amazonaws.services.dynamodbv2.local.shared.access.LocalDynamoDBStreamsClient.getShardIterator(LocalDynamoDBStreamsClient.java:267)
at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBRequestHandler.getShardIterator(LocalDynamoDBRequestHandler.java:289)
at com.amazonaws.services.dynamodbv2.local.dispatchers.GetShardIteratorDispatcher.enact(GetShardIteratorDispatcher.java:19)
at com.amazonaws.services.dynamodbv2.local.dispatchers.GetShardIteratorDispatcher.enact(GetShardIteratorDispatcher.java:11)
at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBServerHandler.packageDynamoDBResponse(LocalDynamoDBServerHandler.java:364)
at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBServerHandler.handle(LocalDynamoDBServerHandler.java:451)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1088)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1024)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:370)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.base/java.lang.Thread.run(Thread.java:844)
Caused by:
java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
at com.amazonaws.services.dynamodbv2.local.shared.access.ShardIterator.encodeShardIterator(ShardIterator.java:64)
at com.amazonaws.services.dynamodbv2.local.shared.access.ShardIterator.toString(ShardIterator.java:53)
at com.amazonaws.services.dynamodbv2.local.shared.access.LocalDynamoDBStreamsClient.getShardIterator(LocalDynamoDBStreamsClient.java:457)
at com.amazonaws.services.dynamodbv2.local.shared.access.LocalDynamoDBStreamsClient.getShardIterator(LocalDynamoDBStreamsClient.java:267)
at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBRequestHandler.getShardIterator(LocalDynamoDBRequestHandler.java:289)
at com.amazonaws.services.dynamodbv2.local.dispatchers.GetShardIteratorDispatcher.enact(GetShardIteratorDispatcher.java:19)
at com.amazonaws.services.dynamodbv2.local.dispatchers.GetShardIteratorDispatcher.enact(GetShardIteratorDispatcher.java:11)
at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBServerHandler.packageDynamoDBResponse(LocalDynamoDBServerHandler.java:364)
at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBServerHandler.handle(LocalDynamoDBServerHandler.java:451)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1088)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1024)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:370)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.base/java.lang.Thread.run(Thread.java:844)
2018-12-20 15:37:10.034:WARN:oejs.AbstractHttpConnection:/
java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
at com.amazonaws.services.dynamodbv2.local.shared.access.ShardIterator.encodeShardIterator(ShardIterator.java:64)
at com.amazonaws.services.dynamodbv2.local.shared.access.ShardIterator.toString(ShardIterator.java:53)
at com.amazonaws.services.dynamodbv2.local.shared.access.LocalDynamoDBStreamsClient.getShardIterator(LocalDynamoDBStreamsClient.java:457)
at com.amazonaws.services.dynamodbv2.local.shared.access.LocalDynamoDBStreamsClient.getShardIterator(LocalDynamoDBStreamsClient.java:267)
at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBRequestHandler.getShardIterator(LocalDynamoDBRequestHandler.java:289)
at com.amazonaws.services.dynamodbv2.local.dispatchers.GetShardIteratorDispatcher.enact(GetShardIteratorDispatcher.java:19)
at com.amazonaws.services.dynamodbv2.local.dispatchers.GetShardIteratorDispatcher.enact(GetShardIteratorDispatcher.java:11)
at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBServerHandler.packageDynamoDBResponse(LocalDynamoDBServerHandler.java:364)
at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBServerHandler.handle(LocalDynamoDBServerHandler.java:451)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1088)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1024)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:370)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.base/java.lang.Thread.run(Thread.java:844)
Caused by:
java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
at com.amazonaws.services.dynamodbv2.local.shared.access.ShardIterator.encodeShardIterator(ShardIterator.java:64)
at com.amazonaws.services.dynamodbv2.local.shared.access.ShardIterator.toString(ShardIterator.java:53)
at com.amazonaws.services.dynamodbv2.local.shared.access.LocalDynamoDBStreamsClient.getShardIterator(LocalDynamoDBStreamsClient.java:457)
at com.amazonaws.services.dynamodbv2.local.shared.access.LocalDynamoDBStreamsClient.getShardIterator(LocalDynamoDBStreamsClient.java:267)
at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBRequestHandler.getShardIterator(LocalDynamoDBRequestHandler.java:289)
at com.amazonaws.services.dynamodbv2.local.dispatchers.GetShardIteratorDispatcher.enact(GetShardIteratorDispatcher.java:19)
at com.amazonaws.services.dynamodbv2.local.dispatchers.GetShardIteratorDispatcher.enact(GetShardIteratorDispatcher.java:11)
at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBServerHandler.packageDynamoDBResponse(LocalDynamoDBServerHandler.java:364)
at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBServerHandler.handle(LocalDynamoDBServerHandler.java:451)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1088)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1024)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:370)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.base/java.lang.Thread.run(Thread.java:844)
2018-12-20 15:37:10.245:WARN:oejs.AbstractHttpConnection:/
java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
at com.amazonaws.services.dynamodbv2.local.shared.access.ShardIterator.encodeShardIterator(ShardIterator.java:64)
at com.amazonaws.services.dynamodbv2.local.shared.access.ShardIterator.toString(ShardIterator.java:53)
at com.amazonaws.services.dynamodbv2.local.shared.access.LocalDynamoDBStreamsClient.getShardIterator(LocalDynamoDBStreamsClient.java:457)
at com.amazonaws.services.dynamodbv2.local.shared.access.LocalDynamoDBStreamsClient.getShardIterator(LocalDynamoDBStreamsClient.java:267)
at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBRequestHandler.getShardIterator(LocalDynamoDBRequestHandler.java:289)
at com.amazonaws.services.dynamodbv2.local.dispatchers.GetShardIteratorDispatcher.enact(GetShardIteratorDispatcher.java:19)
at com.amazonaws.services.dynamodbv2.local.dispatchers.GetShardIteratorDispatcher.enact(GetShardIteratorDispatcher.java:11)
at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBServerHandler.packageDynamoDBResponse(LocalDynamoDBServerHandler.java:364)
at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBServerHandler.handle(LocalDynamoDBServerHandler.java:451)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1088)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1024)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:370)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.base/java.lang.Thread.run(Thread.java:844)
Caused by:
java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
at com.amazonaws.services.dynamodbv2.local.shared.access.ShardIterator.encodeShardIterator(ShardIterator.java:64)
at com.amazonaws.services.dynamodbv2.local.shared.access.ShardIterator.toString(ShardIterator.java:53)
at com.amazonaws.services.dynamodbv2.local.shared.access.LocalDynamoDBStreamsClient.getShardIterator(LocalDynamoDBStreamsClient.java:457)
at com.amazonaws.services.dynamodbv2.local.shared.access.LocalDynamoDBStreamsClient.getShardIterator(LocalDynamoDBStreamsClient.java:267)
at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBRequestHandler.getShardIterator(LocalDynamoDBRequestHandler.java:289)
at com.amazonaws.services.dynamodbv2.local.dispatchers.GetShardIteratorDispatcher.enact(GetShardIteratorDispatcher.java:19)
at com.amazonaws.services.dynamodbv2.local.dispatchers.GetShardIteratorDispatcher.enact(GetShardIteratorDispatcher.java:11)
at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBServerHandler.packageDynamoDBResponse(LocalDynamoDBServerHandler.java:364)
at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBServerHandler.handle(LocalDynamoDBServerHandler.java:451)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1088)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1024)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:370)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.base/java.lang.Thread.run(Thread.java:844)
2018-12-20 15:37:10.501:WARN:oejs.AbstractHttpConnection:/
java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
at com.amazonaws.services.dynamodbv2.local.shared.access.ShardIterator.encodeShardIterator(ShardIterator.java:64)
at com.amazonaws.services.dynamodbv2.local.shared.access.ShardIterator.toString(ShardIterator.java:53)
at com.amazonaws.services.dynamodbv2.local.shared.access.LocalDynamoDBStreamsClient.getShardIterator(LocalDynamoDBStreamsClient.java:457)
at com.amazonaws.services.dynamodbv2.local.shared.access.LocalDynamoDBStreamsClient.getShardIterator(LocalDynamoDBStreamsClient.java:267)
at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBRequestHandler.getShardIterator(LocalDynamoDBRequestHandler.java:289)
at com.amazonaws.services.dynamodbv2.local.dispatchers.GetShardIteratorDispatcher.enact(GetShardIteratorDispatcher.java:19)
at com.amazonaws.services.dynamodbv2.local.dispatchers.GetShardIteratorDispatcher.enact(GetShardIteratorDispatcher.java:11)
at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBServerHandler.packageDynamoDBResponse(LocalDynamoDBServerHandler.java:364)
at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBServerHandler.handle(LocalDynamoDBServerHandler.java:451)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1088)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1024)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:370)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.base/java.lang.Thread.run(Thread.java:844)
Caused by:
java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
at com.amazonaws.services.dynamodbv2.local.shared.access.ShardIterator.encodeShardIterator(ShardIterator.java:64)
at com.amazonaws.services.dynamodbv2.local.shared.access.ShardIterator.toString(ShardIterator.java:53)
at com.amazonaws.services.dynamodbv2.local.shared.access.LocalDynamoDBStreamsClient.getShardIterator(LocalDynamoDBStreamsClient.java:457)
at com.amazonaws.services.dynamodbv2.local.shared.access.LocalDynamoDBStreamsClient.getShardIterator(LocalDynamoDBStreamsClient.java:267)
at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBRequestHandler.getShardIterator(LocalDynamoDBRequestHandler.java:289)
at com.amazonaws.services.dynamodbv2.local.dispatchers.GetShardIteratorDispatcher.enact(GetShardIteratorDispatcher.java:19)
at com.amazonaws.services.dynamodbv2.local.dispatchers.GetShardIteratorDispatcher.enact(GetShardIteratorDispatcher.java:11)
at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBServerHandler.packageDynamoDBResponse(LocalDynamoDBServerHandler.java:364)
at com.amazonaws.services.dynamodbv2.local.server.LocalDynamoDBServerHandler.handle(LocalDynamoDBServerHandler.java:451)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1088)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1024)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:370)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.base/java.lang.Thread.run(Thread.java:844)
I tried to switch and use the following jdk:
Do you know how to resolve this? I'm currently using Ubuntu 18.04
Thanks for the great work here! Wanted to see if serverless-offline 6.x support is in the works, in particular for serverless-offline-sqs?
I'm happy to help!
The current WaitTimeSeconds is set to 1s which is quite fast for polling for new messages. It's more cost effective to change this value to 20s or at least make it configurable.
Hi there,
I've been playing with offline-sqs and I believe there is a code bug.
The specific line is: https://github.com/godu/serverless/blob/master/packages/serverless-offline-sqs/src/index.js#L38
When you create a queue in AWS there is no trailing '/' in the ARN; which this code expects.
$ aws sqs create-queue --queue-name funtimes
{
"QueueUrl": "https://us-west-2.queue.amazonaws.com/<acct>/funtimes"
}
$ aws sqs get-queue-attributes --queue-url <url_above> --attribute-names QueueArn
{
"Attributes": {
"QueueArn": "arn:aws:sqs:us-west-2:<acct>:funtimes"
}
}
Reading this code makes me think there should be a URL in the function sqs configurtion, however that is not in line with the serverless docs on the matter
functions:
funtimes:
handler: src/funtimes.handler
events:
- sqs:
arn: arn:aws:sqs:us-west-2:<acct>:funtimes
When I use this plugin I get the following error:
[1] (node:20757) UnhandledPromiseRejectionWarning: MissingRequiredParameter: Missing required key 'QueueName' in params
[1] at ParamValidator.fail (/Users/ossareh/dev/src/code.famfi.co/mono/node_modules/serverless-offline-sqs/node_modules/aws-sdk/lib/param_validator.js:50:37)
[1] at ParamValidator.validateStructure (/Users/ossareh/dev/src/code.famfi.co/mono/node_modules/serverless-offline-sqs/node_modules/aws-sdk/lib/param_validator.js:61:14)
[1] at ParamValidator.validateMember (/Users/ossareh/dev/src/code.famfi.co/mono/node_modules/serverless-offline-sqs/node_modules/aws-sdk/lib/param_validator.js:88:21)
The config I have is pretty simple:
custom:
servleress-offline-sqs:
region: us-west-2 # without this we get a missing region related error
Also, it's not possible to use a slash in a queue name:
$ aws sqs create-queue --queue-name funtimes/method
An error occurred (InvalidParameterValue) when calling the CreateQueue operation: Can only include alphanumeric characters, hyphens, or underscores. 1 to 80 in length
One thought I had was to allow the user to specify the QueueName directly, you can see this here: ossareh@8da4b47 - however before submitting this to you in a PR I wanted to make sure I'm not missing something obvious.
I have this issue while autocreating queues, probably related to this commit :
0b80ee4#diff-32e9d7d10726a2f50f1aea57d090602c
3.0.1 works fine.
sls deploy seems to required the file exists even though presumably this is offline plugin is meant to be used offline only, i dont want to commit my .env file as its got sensitive information on, when using sls deploy i would hope it would use ssm rather than the offline fallback
any thoughts on this ?
thanks, Ed
{"Records":[{"eventID":"9544a16b-6c66-4902-a5bb-6c243c93a2f3","eventName":"INSERT","eventVersion":"1.1","eventSource":"aws:dynamodb","awsRegion":"ddblocal","dynamodb":{"ApproximateCreationDateTime":"2019-09-21T15:12:00.000Z","Keys":{"id":{"S":"456"}},"NewImage":{"id":{"S":"456"}},"SequenceNumber":"000000000000000000004","SizeBytes":10,"StreamViewType":"NEW_IMAGE"}}]
But when running in the cloud works fine
DynamoDBStreamReadable prematurely emits end
which causes the serverless-offline-dynamodb-streams
plugin to close it's writable. This means that when the plugin is used with TRIM_HORIZON
it will only fire handlers on sls offline start
.
Looks like this PR to fix LATEST
starting point might have broken this:
#37
Hi,
When running an SQS event handler, I was getting the following error:
Serverless: TypeError: Cannot convert undefined or null to object
at Function.assign (<anonymous>)
at getConfig (/Users/grantfellows/code/authoriser/node_modules/serverless-offline-sqs/src/index.js:30:17)
at ServerlessOfflineSQS.eventHandler (/Users/xxxx/code/authoriser/node_modules/serverless-offline-sqs/src/index.js:96:30)
at cb (/Users/xxxx/code/authoriser/node_modules/serverless-offline-sqs/src/index.js:194:41)
at Promise (/Users/xxxx/code/authoriser/node_modules/serverless-offline-sqs/src/index.js:21:5)
at new Promise (<anonymous>)
at fromCallback (/Users/xxxx/code/authoriser/node_modules/serverless-offline-sqs/src/index.js:20:3)
at next (/Users/xxxx/code/authoriser/node_modules/serverless-offline-sqs/src/index.js:194:17)
at process._tickCallback (internal/process/next_tick.js:68:7)
I traced it down to this line:
const {location = '.'} = getConfig(this.service, this.options, 'serverless-offline');
This causes errors if you don't have any custom serverless-offline variables defined in your yaml.
I had to fix this by adding in the following to my yaml:
custom:
serverless-offline:
test: test
I think the configuration lookup needs to be more graceful to handle this scenario.
I am running serverless offline
inside a docker container, and I have my SQS endpoint as http://elasticmq:9324
. This works fine for creating new queues, but when we fetch the QueueUrl from SQS here:
We get back a QueueUrl of http://localhost:9324/queue/queue-name
instead of http://elasticmq:9324/queue/queue-name
, thus causing the fetching of messages from the queue to fail.
I think this is a bug/feature of the GetQueueUrl
API endpoint, but could we perhaps avoid using it and compute the QueueUrl ourselves?
serverless-offline-dynamodb-streams Records missing the eventSourceARN
parameter which should be the ARN of the stream in question. This property is important when binding a single function to multiple streams.
It is not clear what format the file/contents of the file for the SSM values needs to be. Can you provide an example?
Would love to use this plugin, but we are creating our lambdas in python
What is the purpose of overwriting process.env on line 138? I've been wrestling with a pretty nasty bug for the last few days and traced it down to this single line of code. When I comment it, the function environment is preserved as defined in serverless.yml, but when I leave it uncommented, I lose all environment variables defined under provider.environment.
Some feedback would be appreciated. This is a project for a very large client and I'd love to use the plugin. It is working well otherwise with ElasticMQ running locally.
I have a serverless lambda stack that has been in place for some time. Recently, we began wanting to write API Gateway Access Logs for our existing API Gateway API. This plugin appears to do exactly what we want, except it seems to have issues when trying to add it to a pre-existing API Gateway API.
When I run sls deploy
I get the following error:
CloudFormation - CREATE_FAILED - AWS::ApiGateway::Stage - ApiGatewayStage
18:54:20 Serverless: Operation failed!
18:54:20
18:54:20 Serverless Error ---------------------------------------
18:54:20
18:54:20 An error occurred: ApiGatewayStage - staging already exists.
18:54:20
18:54:20 Stack Trace --------------------------------------------
18:54:20
18:54:20 ServerlessError: An error occurred: ApiGatewayStage - staging already exists.
18:54:20 at provider.request.then (/usr/lib/node_modules/serverless/lib/plugins/aws/lib/monitorStack.js:112:33)
18:54:20 From previous event:
18:54:20 at AwsDeploy.monitorStack (/usr/lib/node_modules/serverless/lib/plugins/aws/lib/monitorStack.js:26:12)
18:54:20 at provider.request.then (/usr/lib/node_modules/serverless/lib/plugins/aws/lib/updateStack.js:95:30)
18:54:20 From previous event:
18:54:20 at AwsDeploy.update (/usr/lib/node_modules/serverless/lib/plugins/aws/lib/updateStack.js:95:8)
18:54:20 From previous event:
18:54:20 at AwsDeploy.BbPromise.bind.then (/usr/lib/node_modules/serverless/lib/plugins/aws/lib/updateStack.js:112:12)
18:54:20 From previous event:
18:54:20 at AwsDeploy.updateStack (/usr/lib/node_modules/serverless/lib/plugins/aws/lib/updateStack.js:106:8)
18:54:20 From previous event:
18:54:20 at AwsDeploy.BbPromise.bind.then (/usr/lib/node_modules/serverless/lib/plugins/aws/deploy/index.js:129:39)
18:54:20 From previous event:
18:54:20 at Object.aws:deploy:deploy:updateStack [as hook] (/usr/lib/node_modules/serverless/lib/plugins/aws/deploy/index.js:125:10)
18:54:20 at BbPromise.reduce (/usr/lib/node_modules/serverless/lib/classes/PluginManager.js:390:55)
18:54:20 From previous event:
18:54:20 at PluginManager.invoke (/usr/lib/node_modules/serverless/lib/classes/PluginManager.js:390:22)
18:54:20 at PluginManager.spawn (/usr/lib/node_modules/serverless/lib/classes/PluginManager.js:408:17)
18:54:20 at AwsDeploy.BbPromise.bind.then (/usr/lib/node_modules/serverless/lib/plugins/aws/deploy/index.js:95:48)
18:54:20 From previous event:
18:54:20 at Object.deploy:deploy [as hook] (/usr/lib/node_modules/serverless/lib/plugins/aws/deploy/index.js:91:10)
18:54:20 at BbPromise.reduce (/usr/lib/node_modules/serverless/lib/classes/PluginManager.js:390:55)
18:54:20 From previous event:
18:54:20 at PluginManager.invoke (/usr/lib/node_modules/serverless/lib/classes/PluginManager.js:390:22)
18:54:20 at PluginManager.run (/usr/lib/node_modules/serverless/lib/classes/PluginManager.js:421:17)
18:54:20 at variables.populateService.then.then (/usr/lib/node_modules/serverless/lib/Serverless.js:157:33)
18:54:20 at runCallback (timers.js:705:18)
18:54:20 at tryOnImmediate (timers.js:676:5)
18:54:20 at processImmediate (timers.js:658:5)
18:54:20 at process.topLevelDomainCallback (domain.js:120:23)
18:54:20 From previous event:
18:54:20 at Serverless.run (/usr/lib/node_modules/serverless/lib/Serverless.js:144:8)
18:54:20 at serverless.init.then (/usr/lib/node_modules/serverless/bin/serverless:43:50)
Is there any way to add this plugin to my serverless config and deploy successfully without having to delete my entire Cloud Formation stack?
serverless-offline 4.10.0
was released on May 5th and it changes the function signature of createLambdaContext. This in turn breaks serverless-offline-dynamodb-streams. I was able to work around this using yarn's resolutions feature to pin the version to 4.9.4
.
Thank you so much for your hard work on this project! ๐ It has made it really easy to work with SQS offline. I recently upgraded to v2. The autoCreate functionality works really well. I was able to replace a shell script that used the AWS cli to create queues. The only gap I have is dead letter queue (DLQ) support.
Current state:
autoCreate scans the lambda event sources for SQS events. Queues are built for each event source.
Proposed state:
Optionally(?) scan the resources section to see if CloudFormation templates exist for SQS. If so, generate DLQs first then add the main queues with redrive policies.
This may likely be outside the indented scope of this module. No worries if you arenโt interested in supporting it! ๐ค
If you have multiple functions listening to the kinesis stream, adding the function name to the [โ๏ธ] allows you to know which of the multiple functions that were called is completing.
When I run the command:
serverless offline start
SQS is triggered only once, i need to restart serverless to trigger again.
it looks like the before:offline:start:init
hook is never triggered, not sure it has changed or not.
https://github.com/godu/serverless/blob/master/packages/serverless-offline-sqs/src/index.js#L37
Changing this to before:offline:start
is actually working
After upgrading from v3.0.1 to v3.1.1 I get an error MalformedQueryString. It looks like the RedrivePolicy might be the problem, although this config was previously working and also matches the serverless documentation.
EmailQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: queue-name-${self:provider.stage}
MessageRetentionPeriod: 1209600
RedrivePolicy:
deadLetterTargetArn:
'Fn::GetAtt':
- EmailDeadLetterQueue
- Arn
maxReceiveCount: 5
Logs:
**Serverless: [AWS sqs 400 0.546s 0 retries] createQueue({
QueueName: 'queue-name-local',
Attributes: {
MessageRetentionPeriod: '1209600',
RedrivePolicy: '[object Object]'
}
})
Malformed Query String ---------------------------------
MalformedQueryString: MalformedQueryString; see the SQS docs.
at Request.extractError (/app/node_modules/aws-sdk/lib/protocol/query.js:50:29)
at Request.callListeners (/app/node_modules/aws-sdk/lib/sequential_executor.js:106:20)
at Request.emit (/app/node_modules/aws-sdk/lib/sequential_executor.js:78:10)
at Request.emit (/app/node_modules/aws-sdk/lib/request.js:683:14)
at Request.transition (/app/node_modules/aws-sdk/lib/request.js:22:10)
at AcceptorStateMachine.runTo (/app/node_modules/aws-sdk/lib/state_machine.js:14:12)
at /app/node_modules/aws-sdk/lib/state_machine.js:26:10
at Request.<anonymous> (/app/node_modules/aws-sdk/lib/request.js:38:9)
at Request.<anonymous> (/app/node_modules/aws-sdk/lib/request.js:685:12)
at Request.callListeners (/app/node_modules/aws-sdk/lib/sequential_executor.js:116:18)
at Request.emit (/app/node_modules/aws-sdk/lib/sequential_executor.js:78:10)
at Request.emit (/app/node_modules/aws-sdk/lib/request.js:683:14)
at Request.transition (/app/node_modules/aws-sdk/lib/request.js:22:10)
at AcceptorStateMachine.runTo (/app/node_modules/aws-sdk/lib/state_machine.js:14:12)
at /app/node_modules/aws-sdk/lib/state_machine.js:26:10
at Request.<anonymous> (/app/node_modules/aws-sdk/lib/request.js:38:9)
at Request.<anonymous> (/app/node_modules/aws-sdk/lib/request.js:685:12)
at Request.callListeners (/app/node_modules/aws-sdk/lib/sequential_executor.js:116:18)
at callNextListener (/app/node_modules/aws-sdk/lib/sequential_executor.js:96:12)
at IncomingMessage.onEnd (/app/node_modules/aws-sdk/lib/event_listeners.js:307:13)
at IncomingMessage.emit (events.js:215:7)
at IncomingMessage.EventEmitter.emit (domain.js:475:20)
at endReadableNT (_stream_readable.js:1184:12)
at processTicksAndRejections (internal/process/task_queues.js:80:21)
Continuation of discussion in closed issue #20 (comment). process env is still reset when using serverless-offline-sqs
with --useWorkerThreads
.
Hello! It seems that function is triggered only during one read iteration. I'm trying to launch some test function, but I see only streams which appears within read interval. Is it possible to see streams not only the 1st read interval?
It got some errors like this
(node:52370) UnhandledPromiseRejectionWarning: Error: Cannot find module '.../src/handler'
How can I solve this?
Hi,
I get this error when running serverless offline
with this plugin turned on:
(node:54160) UnhandledPromiseRejectionWarning: Error: connect ECONNREFUSED 0.0.0.0:9324
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1113:14)
(node:54160) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
Any idea why this is happening? Thanks!
Hi there,
I use serverless-offline-sqs
within a serverless-offline project which is started with useSeparateProcesses
. This is currently the only way to get typeorm
s connection pooling working properly while developing via serverless-offline (at least as far as I know :))
Without useSeparateProcesses
the integration via sqs, serverkess-offline and serverless-offline-sqs works great, but breaks with useSeparateProcesses
. I get the following exception when sending a message:
Serverless: my-queue (ฮป: messageProcessor)
(node:90487) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'createExternalHandler' of undefined
at createHandler (/node_modules/serverless-offline/src/functionHelper.js:90:19)
at ServerlessOfflineSQS.eventHandler (/node_modules/serverless-offline-sqs/src/index.js:100:21)
I tried to use a configuration property like skipCacheInvalidation
serverless-offline-sqs:
...
useSeparateProcesses: true
But this does not help.
I would be grateful for any advice :)
Thanks a lot!
Getting the below error when using LATEST
as startingPosition
This line is setting iterator without a check on whether data.NextShardIterator is returned or not.
I've only seen this when there are multiple shards. One of the shards returns records as well as a NextShardIterator. The other shards returns an empty array and no NextShardIterator
e.g. for these two shards, the one with shardId shardId-00000001550719748929-e0a2afc5
fails
[
{
ShardId: 'shardId-00000001550719748929-e0a2afc5',
SequenceNumberRange: {
StartingSequenceNumber: '000000000000000075450',
EndingSequenceNumber: '000000000000000121470'
}
},
{
ShardId: 'shardId-00000001550766723072-c08a0b5d',
SequenceNumberRange: {
StartingSequenceNumber: '000000000000000121472'
},
ParentShardId: 'shardId-00000001550719748929-e0a2afc5'
}
]
Full Error:
MissingRequiredParameter: Missing required key 'ShardIterator' in params
at ParamValidator.fail (/Users/user/project/node_modules/aws-sdk/lib/param_validator.js:50:37)
at ParamValidator.validateStructure (/Users/user/project/node_modules/aws-sdk/lib/param_validator.js:61:14)
at ParamValidator.validateMember (/Users/user/project/node_modules/aws-sdk/lib/param_validator.js:88:21)
at ParamValidator.validate (/Users/user/project/node_modules/aws-sdk/lib/param_validator.js:34:10)
at Request.VALIDATE_PARAMETERS (/Users/user/project/node_modules/aws-sdk/lib/event_listeners.js:126:42)
at Request.callListeners (/Users/user/project/node_modules/aws-sdk/lib/sequential_executor.js:106:20)
at callNextListener (/Users/user/project/node_modules/aws-sdk/lib/sequential_executor.js:96:12)
at /Users/user/project/node_modules/aws-sdk/lib/event_listeners.js:86:9
at finish (/Users/user/project/node_modules/aws-sdk/lib/config.js:350:7)
at /Users/user/project/node_modules/aws-sdk/lib/config.js:368:9
at Credentials.get (/Users/user/project/node_modules/aws-sdk/lib/credentials.js:127:7)
at getAsyncCredentials (/Users/user/project/node_modules/aws-sdk/lib/config.js:362:24)
at Config.getCredentials (/Users/user/project/node_modules/aws-sdk/lib/config.js:382:9)
at Request.VALIDATE_CREDENTIALS (/Users/user/project/node_modules/aws-sdk/lib/event_listeners.js:81:26)
at Request.callListeners (/Users/user/project/node_modules/aws-sdk/lib/sequential_executor.js:102:18)
at Request.emit (/Users/user/project/node_modules/aws-sdk/lib/sequential_executor.js:78:10)
at Request.emit (/Users/user/project/node_modules/aws-sdk/lib/request.js:683:14)
at Request.transition (/Users/user/project/node_modules/aws-sdk/lib/request.js:22:10)
at AcceptorStateMachine.runTo (/Users/user/project/node_modules/aws-sdk/lib/state_machine.js:14:12)
at Request.runTo (/Users/user/project/node_modules/aws-sdk/lib/request.js:403:15)
at Request.send (/Users/user/project/node_modules/aws-sdk/lib/request.js:367:10)
at features.constructor.makeRequest (/Users/user/project/node_modules/aws-sdk/lib/service.js:205:27)
at features.constructor.svc.(anonymous function) [as getRecords] (/Users/user/project/node_modules/aws-sdk/lib/service.js:672:23)
at Timeout.read [as _onTimeout] (/Users/user/project/node_modules/dynamodb-streams-readable/src/index.js:101:12)
at ontimeout (timers.js:502:15)
at tryOnTimeout (timers.js:323:5)
at Timer.listOnTimeout (timers.js:290:5)
When installing alongside newer versions of serverless-offline this line:
const LambdaContext = require('serverless-offline/src/LambdaContext');
fails as LambdaContext doesn't exist on that path
With serverless offline start (using serverless webpack) I get the following warning.
(node:30115) UnhandledPromiseRejectionWarning: AWS.SimpleQueueService.NonExistentQueue: The specified queue does not exist for this wsdl version.
at Request.extractError (/home/redrazor/www/scheduling-api/node_modules/serverless-offline-sqs/node_modules/aws-sdk/lib/protocol/query.js:47:29)
at Request.callListeners (/home/redrazor/www/scheduling-api/node_modules/serverless-offline-sqs/node_modules/aws-sdk/lib/sequential_executor.js:106:20)
at Request.emit (/home/redrazor/www/scheduling-api/node_modules/serverless-offline-sqs/node_modules/aws-sdk/lib/sequential_executor.js:78:10)
at Request.emit (/home/redrazor/www/scheduling-api/node_modules/serverless-offline-sqs/node_modules/aws-sdk/lib/request.js:683:14)
at Request.transition (/home/redrazor/www/scheduling-api/node_modules/serverless-offline-sqs/node_modules/aws-sdk/lib/request.js:22:10)
at AcceptorStateMachine.runTo (/home/redrazor/www/scheduling-api/node_modules/serverless-offline-sqs/node_modules/aws-sdk/lib/state_machine.js:14:12)
at /home/redrazor/www/scheduling-api/node_modules/serverless-offline-sqs/node_modules/aws-sdk/lib/state_machine.js:26:10
at Request.<anonymous> (/home/redrazor/www/scheduling-api/node_modules/serverless-offline-sqs/node_modules/aws-sdk/lib/request.js:38:9)
at Request.<anonymous> (/home/redrazor/www/scheduling-api/node_modules/serverless-offline-sqs/node_modules/aws-sdk/lib/request.js:685:12)
at Request.callListeners (/home/redrazor/www/scheduling-api/node_modules/serverless-offline-sqs/node_modules/aws-sdk/lib/sequential_executor.js:116:18)
at Request.emit (/home/redrazor/www/scheduling-api/node_modules/serverless-offline-sqs/node_modules/aws-sdk/lib/sequential_executor.js:78:10)
at Request.emit (/home/redrazor/www/scheduling-api/node_modules/serverless-offline-sqs/node_modules/aws-sdk/lib/request.js:683:14)
at Request.transition (/home/redrazor/www/scheduling-api/node_modules/serverless-offline-sqs/node_modules/aws-sdk/lib/request.js:22:10)
at AcceptorStateMachine.runTo (/home/redrazor/www/scheduling-api/node_modules/serverless-offline-sqs/node_modules/aws-sdk/lib/state_machine.js:14:12)
at /home/redrazor/www/scheduling-api/node_modules/serverless-offline-sqs/node_modules/aws-sdk/lib/state_machine.js:26:10
at Request.<anonymous> (/home/redrazor/www/scheduling-api/node_modules/serverless-offline-sqs/node_modules/aws-sdk/lib/request.js:38:9)
at Request.<anonymous> (/home/redrazor/www/scheduling-api/node_modules/serverless-offline-sqs/node_modules/aws-sdk/lib/request.js:685:12)
at Request.callListeners (/home/redrazor/www/scheduling-api/node_modules/serverless-offline-sqs/node_modules/aws-sdk/lib/sequential_executor.js:116:18)
at callNextListener (/home/redrazor/www/scheduling-api/node_modules/serverless-offline-sqs/node_modules/aws-sdk/lib/sequential_executor.js:96:12)
at IncomingMessage.onEnd (/home/redrazor/www/scheduling-api/node_modules/serverless-offline-sqs/node_modules/aws-sdk/lib/event_listeners.js:294:13)
at emitNone (events.js:111:20)
at IncomingMessage.emit (events.js:208:7)
at endReadableNT (_stream_readable.js:1064:12)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickDomainCallback (internal/process/next_tick.js:218:9)
(node:30115) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
This is my config on serverless.yml
functions:
dispatcher:
handler: application/notification/actions/processEmail.dispatch
events:
- sqs: arn:aws:sqs:region:eu-west-1:EmailNotifications
# serverless ressources
resources:
Resources:
testSQS:
Type: AWS::SQS::Queue
Properties:
QueueName: "my-testSQS"
VisibilityTimeout: 25
MessageRetentionPeriod: 120
ReceiveMessageWaitTimeSeconds: 0
RedrivePolicy:
deadLetterTargetArn:
Fn::GetAtt:
- testDeadLetterQueue
- Arn
maxReceiveCount: 5
testDeadLetterQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: "my-testDeadLetterQueue"
VisibilityTimeout: 25
MessageRetentionPeriod: 120
ReceiveMessageWaitTimeSeconds: 0
I have this configuration in serverless.yml
, what i expected that if the message fail to process (Lambda error), it will keep trying until it reach MessageRetentionPeriod
then it will go to testDeadLetterQueue
, it is work fine in AWS SQS (Cloud), but in local the message keep trying forever and it never reach dead-letter-queue.
Could anyone suggest me what is wrong with this?
Bear in mind the following lambda definition:
sqs_triggered_lambda:
handler: function.handle
events:
- sqs:
arn:
Fn::GetAtt:
- QueueName
- Arn
When a new message arrives the queue, it won't execute the lambda function locally (within serverless-offline).
I am using SLS Offline DynamoDB Streams (SODS) to develop and test a Serverless + NodeJS application that uses DynamoDB streams to trigger additional Lambda functions. I have struggled with specifying the ARN of the DynamoDB stream correctly and during that course found several issues around this.
Issue 1: At the very bottom of the SODS NPM page an example describes a variant using a tableName key. This does work and from all I can tell is also not supported by the getTableName function.
Issue 2: Line 186 of index.js is missing an additional null check for arn:
if (tableEvent.arn && tableEvent.arn['Fn::GetAtt']) {
Issue 3: I did not test this but from all I can tell, there are two more ways to specify a DynamoDB table stream in Serverless that are not supported by SODS:
- stream:
type: dynamodb
arn:
Fn::ImportValue: MyExportedDynamoDbStreamArnId
- stream:
type: dynamodb
arn:
Ref: MyDynamoDbTableStreamArn
It could be that those two ways are not feasible for local deployments (again, I didn't test them) but I figured I'll point it out anyway.
Time permitting I'll put together a pull request for no. 2. Not sure what you would want to do about no. 1 and 3.
Hey!
I really want to use your plugin since it's brand new and support for SQS as an event trigger is in place.
When I follow your documentation instructions, I get the below error:
Serverless Error ---------------------------------------
Serverless plugin "serverless-offline-sqs" initialization errored: Unexpected identifier
Get Support --------------------------------------------
Docs: docs.serverless.com
Bugs: github.com/serverless/serverless/issues
Issues: forum.serverless.com
Your Environment Information -----------------------------
OS: darwin
Node Version: 6.10.3
Serverless Version: 1.29.2
I followed the above based on these instructions:
Then inside your project's serverless.yml file, add following entry to the plugins section before serverless-offline (and after serverless-webpack if presents): serverless-offline-sqs.
plugins:
- serverless-webpack
- serverless-offline-sqs
- serverless-offline
When the custom
section of the serverless.yml
file extracted to an external file like so
custom: ${file(./env.${self:provider.stage}.yml)}
the config file fails to load the configuration for the serverless-offline-sqs
plugin.
I have a docker for my lambda and for the sqs, with this compose file:
version: "3.7"
services:
sqs:
image: softwaremill/elasticmq:0.14.6
volumes:
- ./env/mq.conf:/opt/elasticmq.conf
ports:
- "9324:9324"
lambda:
image: softinstigate/serverless
volumes:
- <path to source>:/lambda
- ~/.aws/:/root/.aws/
working_dir: /lambda
tty: true
entrypoint: bash
command: -c "npm run debug"
my serverless.yml has the following config:
serverless-offline-sqs:
endpoint: http://sqs:9324
region: us-east-1
accessKeyId: root
secretAccessKey: root
skipCacheInvalidation: false
But my lambda tries to connect to 127.0.0.1:
lambda_1 | (node:16) UnhandledPromiseRejectionWarning: Error: connect ECONNREFUSED 127.0.0.1:9324
If i try some random IP thats not mapped on my host or containers the IP is resolve to that random IP.
I'm running docker on Windows:
Docker version 18.09.1, build 4c52b90
docker-compose version 1.23.2, build 1110ad01
My serverless.yml looks like:
plugins:
- serverless-plugin-typescript
- serverless-offline-sqs
- serverless-offline
- serverless-pseudo-parameters
# ...
functions
- processQueue:
handler: src/handlers/processQueue.handler
events:
- sqs: arn:aws:sqs:${self:provider.region}:#{AWS::AccountId}:MyQueue
I've got an error:
(node:1824) UnhandledPromiseRejectionWarning: Invalid request: MissingQueryParamRejection(QueueName), MissingFormFieldRejection(QueueUrl): Invalid request: MissingQueryParamRejection(QueueName), MissingFormFieldRejection(QueueUrl); see the SQS docs.
Looks like pseudo parameters break realisation and queue name cannot be parsed from arn.
This plugin is working great on first start, however when the function which is subscribing to the change is changed, and serverless-offline
triggers a restart, the SQS subscription no longer seems to work.
Here's my config for reference:
plugins:
- serverless-webpack
- serverless-log-forwarding
- serverless-offline-sqs
- serverless-offline
custom:
serverless-offline-sqs:
endpoint: http://0.0.0.0:9324
region: ${self:provider.region}
accessKeyId: local
secretAccessKey: local
serverless-offline:
# httpsProtocol: certs
dontPrintOutput: true
port: ${env:PORT, '3000'}
noTimeout: true
functions:
releaseLogConsumer:
handler: src/handlers/release-log-consumer.handler
events:
- sqs:
arn:
Fn::GetAtt:
- ReleaseLogQueue
- Arn
batchSize: 10
resources:
Resources:
# Release Log resources
ReleaseLogQueue:
Type: "AWS::SQS::Queue"
Properties:
QueueName: "${self:custom.releaseLogQueueName}"
RedrivePolicy:
deadLetterTargetArn:
Fn::GetAtt:
- ReleaseLogDeadLetterQueue
- Arn
maxReceiveCount: 5
MessageRetentionPeriod: 345600 # 4 days
VisibilityTimeout: 25
KmsMasterKeyId: alias/aws/sqs
Hello,
I have encounter an issue that if I have a lambda function, which is only invoked via sqs messages env variables are reset after async action.
For example if have lambda defined like this:
const main = async (event: SQSEvent, context: any) => {
console.log(process.env.LAMBDA_ENV_VARIABLE));
await Promise.Resolve();
console.log(process.env.LAMBDA_ENV_VARIABLE));
};
the second console will output undefined
.
It is caused by resettingprocess.env
without awaiting promise that x variable produces.
https://github.com/CoorpAcademy/serverless-plugins/blob/master/packages/serverless-offline-sqs/src/index.js#L149
I would suggest to fix it like this
const x = handler(event, lambdaContext, lambdaContext.done);
if (x && typeof x.then === 'function' && typeof x.catch === 'function') {
x.then(lambdaContext.succeed)
.catch(lambdaContext.fail)
.then(() => {
process.env = env;
});
} else if (x instanceof Error) {
lambdaContext.fail(x);
process.env = env;
}
I could create pr if they are accepted?
NOTE: it seems that this issue is not reproducible if lambda was invoked firstly via http event ( where serveless offline sets env ) and secondly via sqs.
The integration tests do not appear to test the underlying code that creates the SQS queues. Instead, they rely on running shell scripts that directly invoke the AWS CLI. For example, from scripts/create-queues.sh
:
aws sqs --endpoint-url ${AWS_ENDPOINT_URL} create-queue
Is this not simply creating the queue via the AWS CLI? How is this testing the code contained in packages/serverless-offline-sqs/src/index.js
that is responsible for creating the queues?
After adding serverless-offline-sqs plugin and configuration, startup fails with the following output:
myservice | YAMLException: duplicated mapping key in "/var/task/serverless.yml" at line 2, column 1:
myservice | Serverless: Load command config: ...
myservice | ^
myservice | at generateError (/var/task/node_modules/js-yaml/lib/js-yaml/loader.js:167:10)
myservice | at throwError (/var/task/node_modules/js-yaml/lib/js-yaml/loader.js:173:9)
myservice | at storeMappingPair (/var/task/node_modules/js-yaml/lib/js-yaml/loader.js:335:7)
myservice | at readBlockMapping (/var/task/node_modules/js-yaml/lib/js-yaml/loader.js:1098:9)
myservice | at composeNode (/var/task/node_modules/js-yaml/lib/js-yaml/loader.js:1359:12)
myservice | at readDocument (/var/task/node_modules/js-yaml/lib/js-yaml/loader.js:1519:3)
myservice | at loadDocuments (/var/task/node_modules/js-yaml/lib/js-yaml/loader.js:1575:5)
myservice | at Object.load (/var/task/node_modules/js-yaml/lib/js-yaml/loader.js:1596:19)
myservice | at loadYaml (/var/task/node_modules/serverless/lib/utils/fs/parse.js:12:17)
myservice | at parse (/var/task/node_modules/serverless/lib/utils/fs/parse.js:30:16)
myservice | at fse.readFileAsync.then.contents (/var/task/node_modules/serverless/lib/utils/fs/readFile.js:7:63)
myservice | at /var/task/node_modules/graceful-fs/graceful-fs.js:90:16
myservice | at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:511:3)
myservice | From previous event:
myservice | at readFile (/var/task/node_modules/serverless/lib/utils/fs/readFile.js:7:46)
myservice | at getServerlessConfigFilePath.then.configFilePath (/var/task/node_modules/serverless/lib/utils/getServerlessConfigFile.js:73:16)
myservice | From previous event:
myservice | at Object._.memoize.serverless (/var/task/node_modules/serverless/lib/utils/getServerlessConfigFile.js:65:45)
myservice | at Object.memoized [as getServerlessConfigFile] (/var/task/node_modules/lodash/lodash.js:10552:27)
myservice | at PluginManager.loadConfigFile (/var/task/node_modules/serverless/lib/classes/PluginManager.js:48:8)
myservice | at Serverless.init (/var/task/node_modules/serverless/lib/Serverless.js:65:8)
myservice | at initializeErrorReporter.then (/var/task/node_modules/serverless/bin/serverless.js:59:6)
myservice | at runCallback (timers.js:794:20)
myservice | at tryOnImmediate (timers.js:752:5)
myservice | at processImmediate [as _immediateCallback] (timers.js:729:5)
myservice | From previous event:
myservice | at Object. (/var/task/node_modules/serverless/bin/serverless.js:46:39)
myservice | at Module._compile (module.js:652:30)
myservice | at Object.Module._extensions..js (module.js:663:10)
myservice | at Module.load (module.js:565:32)
myservice | at tryModuleLoad (module.js:505:12)
myservice | at Function.Module._load (module.js:497:3)
myservice | at Function.Module.runMain (module.js:693:10)
myservice | at startup (bootstrap_node.js:188:16)
myservice | at bootstrap_node.js:609:3
myservice |
myservice | Get Support --------------------------------------------
myservice | Docs: docs.serverless.com
myservice | Bugs: github.com/serverless/serverless/issues
myservice | Issues: forum.serverless.com
myservice |
myservice | Your Environment Information ---------------------------
myservice | Operating System: linux
myservice | Node Version: 8.10.0
myservice | Framework Version: 1.51.0
myservice | Plugin Version: 1.3.9
myservice | SDK Version: 2.1.0
YAML actually does not contain any duplicate keys. Verified with sls print, and by using cfn-flip to convert to JSON.
Configuration looks like this:
plugins:
custom:
alerts: ${file(serverless/lambda-cloudwatch-alerts.yml)}
webpack:
# enable auto-packing of external modules since webpack
# uses webpack-node-externals
includeModules: true
serverless-offline-sqs:
autoCreate: false
apiVersion: '2012-11-05' # AWS SQS API version
endpoint: http://localhost:4576
region: us-east-1
accessKeyId: root
secretAccessKey: root
skipCacheInvalidation: false
Good day! It seems that this plugin doesn't work with empty table. After I add something in the table, plugin works for my case.
Need to check here https://github.com/CoorpAcademy/serverless-plugins/blob/master/packages/serverless-offline-sqs/src/index.js#L164 if the name ends with .fifo
then add Attributes: { FifoQueue: true }
I cannot get this module to work, it throws this error and does not trigger the Receiver function. Any idea?
yaml file:
service:
name: services
publish: false
package:
individually: true
custom:
stage: ${opt:stage, self:provider.stage}
serverless-offline-sqs:
autoCreate: true
apiVersion: '2012-11-05'
endpoint: http://172.17.0.5:9324
region: eu-west-1
skipCacheInvalidation: false
provider:
name: aws
runtime: nodejs8.10
stage: ${env:NODE_ENV}
tracing: true # enable tracing
iamRoleStatements:
- Effect: "Allow"
Action:
- "sqs:SendMessage"
- "sqs:ListQueues"
- "sqs:GetQueueUrl"
Resource: "arn:aws:sqs:${self:provider.region}:*"
functions:
ownershipDeviceSyncReceiver:
name: ${self:custom.stage}-ownership-device-sync-from-photo-metadata
handler: src/handlers/ownership/handler.deviceSyncFromPhotoMetadata
reservedConcurrency: 10 <-- Concurrency control
events:
- sqs:
arn:
Fn::GetAtt:
- LocalPhotoMetadataQueue
- Arn
sqsTestSender:
name: ${self:custom.stage}-ownership-sqsTest
handler: src/handlers/ownership/handler.testSender
events:
- http:
method: post
path: /o/sqsTest
plugins:
- serverless-offline-sqs
- serverless-offline
resources:
Resources:
LocalPhotoMetadataQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: LocalPhotoMetadataQueue
Error:
Serverless: Offline listening on http://0.0.0.0:3000
(node:35) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'arn' of null
at ServerlessOfflineSQS.getQueueName (/app/node_modules/serverless-offline-sqs/src/index.js:68:27)
at ServerlessOfflineSQS.createQueueReadable (/app/node_modules/serverless-offline-sqs/src/index.js:159:28)
at queueEvent (/app/node_modules/serverless-offline-sqs/src/index.js:234:14)
at r (/app/node_modules/lodash/lodash.min.js:5:356)
at nu (/app/node_modules/lodash/lodash.min.js:67:92)
at l (/app/node_modules/lodash/lodash.min.js:50:137)
at mapValues.convert (/app/node_modules/serverless-offline-sqs/src/index.js:233:7)
at /app/node_modules/lodash/lodash.min.js:101:386
at /app/node_modules/lodash/lodash.min.js:45:502
at mt (/app/node_modules/lodash/lodash.min.js:27:267)
at An.mapValues (/app/node_modules/lodash/lodash.min.js:101:358)
at l (/app/node_modules/lodash/lodash.min.js:50:137)
at ServerlessOfflineSQS.offlineStartInit (/app/node_modules/serverless-offline-sqs/src/index.js:221:36)
Hi, I'm using the latest version of the offline sqs plugin and it is throwing an error when attempting to sqs offline start
(node:16897) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'arn' of null
at ServerlessOfflineSQS.getQueueName (/Users/xxxx/code/authoriser/node_modules/serverless-offline-sqs/src/index.js:68:27)
at ServerlessOfflineSQS.createQueueReadable (/Users/xxxx/code/authoriser/node_modules/serverless-offline-sqs/src/index.js:160:28)
This is part of my serverless file:
custom:
queueName: 'AppBetaQueue-${self:provider.stage}'
functions:
queue-processor:
handler: packages/queue-processor/index.handler
events:
- sqs:
queueName: ${self:custom.queueName}
arn:
Fn::GetAtt:
- AppBetaQueue
- Arn
resources:
Resources:
AppBetaQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: ${self:custom.queueName}
It seems that despite the documentation showing the standard examples of setting up the SQS event handler, only this one seems to work with this plugin:
- sqs: arn:aws:sqs:region:XXXXXX:AppBetaQueue-dev
I've tried so many variations as per the standard serverless documentation but only the above works. Hopefully it's not just me having this problem!
Thanks!
Sorry, it could be a very basic question, but README.md of sqs-offline
is very short and doesn't explain much.
I want to use the package for local development and I thought that plugin emulates the queue behavior. It's already mentioned in this issue https://github.com/godu/serverless/issues/9 that you have to have some "real" queue to be running to make it work.
The proposed solution is to run ElasicMQ locally or inside a Docker container.
An example is very helpful, but I can see it uses aws-sdk
to create-queue
.. my question is where actually those queues are created? In AWS or somehow locally?
Would be happy to clarify those questions and update README, so it's more clear for a people like me :)
/cc @Maxwell2022
We get the following error when trying to add the plugin serverless-apigateway-access-logs.
Error: The CloudFormation template is invalid: Template format error: Resource name ApiGatewayStage__unused_stage__ is non alphanumeric.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.