Tag: 无服务器框架

使用无服务器框架使用VPCbuild立NAT网关

我正在尝试使用无服务器框架来创build一个可以访问Elasticache集群的Lambda函数,并且可以调用Internet。 我已经configurationserverless.yml来创buildLambda函数,创buildElasticache集群(memcached引擎),最后创build一个VPC并将Lambda函数和Elasticache集群放在其中(否则,它们将无法通信) 。 据我所知,VPC中的内容不能访问互联网,从研究这个主题我得出的结论是,处理这个问题的最佳实践方式是为VPC创build一个NAT网关,使其可以外部访问。 我可以看到如何在AWS控制台中执行此操作,但是我想坚持在serverless.yml定义这个以避免任何手动基础架构设置。 是否有可能在serverless.yml创build一个NAT网关? 正在创build一个NAT网关这样做的正确方法? (有更好的select吗?) 附加信息 为了达到目前的目的,我大量地从一个无服务器的例子中复制(这是一个基于Java的例子,但是概念和服务定义是相同的)。 它创build一个Lambda函数,一个Elasticache集群,并将它们放在VPC中,以便它们可以进行通信。 我相信它也有相同的问题,即Lambda函数无法访问互联网。 https://github.com/mugglmenzel/serverless-examples-cached-rds-ws/blob/master/serverless.yml

如何使用非主键字段查询DynamoDB?

我在我的dynamoDB表中有以下数据。 这是我的代码: const userStatusParams = { TableName: process.env.USERSTATUS_TABLE, KeyConditionExpression: "loggedIn = :loggedIn", ExpressionAttributeValues: { ":loggedIn": true } }; var usersResult; try { usersResult = await dynamoDbLib.call("query", userStatusParams); console.log(usersResult); }catch (e) { console.log("Error occurred querying for users belong to group."); console.log(e); } 亚马逊返回这个错误: { ValidationException: Query condition missed key schema element: userId at Request.extractError … 我怎样才能返回logging在所有logging==真? […]

按优先级和组值sorting结果,然后筛选结果

这是我的DynamoDB当前数据: 我的目标是创build一个查询过滤结果在组集(像“默认”),然后按优先级进行sorting,然后筛选结果为那些login到== true和状态==空闲。 在SQL中,它会是这样的 SELECT * FROM userstatustable WHERE group == "default" AND loggedIn == true AND status == "idle" ORDER BY priority DESC LIMIT 1 我将如何创build一个查询来做到这一点? 以下是我对DynamoDB表的serverless.yml文件描述。 userStatusTable: #This table is used to track a users current status. Type: AWS::DynamoDB::Table Properties: TableName: ${self:custom.userStatusTable} AttributeDefinitions: #UserID in this case will be created once and constantly […]

debugging无服务器框架调用本地函数

我试图debuggingsls本地调用。 我的设置: 但是我不断收到: /Users/nikos/.nvm/versions/node/v6.9.1/bin/node –debug-brk=63417 –expose_debug_as=v8debug /Users/nikos/.nvm/versions/node/v6.9.1/bin/serverless invoke local -f createTodo Debugger listening on [::]:63417 Process finished with exit code 130 (interrupted by signal 2: SIGINT)

Angular SPA与API Gateway的任何访问控制允许方法不一致

我们目前正在为我们的API使用无服务器部署模型,并使用NodeJS快速代码库。 所有这一切都很好,直到我们遇到了无服务器创build的CloudFormation堆栈的硬性限制,其创build的资源限制为200。 尝试解决这个问题的同时,无服务器团队正在进行嵌套堆栈集成,是用ANYreplaceGET,PUT,POST,DELETE一个单一的路由,在CloudFormation资源中大约节省了75%。 API网关看起来很好,OPTIONS路由的集成响应返回了Access-Control-Allow-Methods: 'OPTIONS,ANY' 。 用邮差testing这个工作就像一个魅力,能够使用所有以前提到的方法,而不是一帆风顺。 从我们的Angular前端执行此操作似乎不起作用。 XMLHttpRequest无法加载。 预检响应中的访问控制 – 允许 – 方法不允许方法PUT。 在Angular的眼里,POST,PUT,DELETE,…都不符合ANY,而邮递员却是这样。 任何input为什么这可能会发生将不胜感激。 UPDATE 一个POST请求通过Angular应用程序工作,只是PUT和DELETE请求抛出'访问控制允许的方法不允许的'错误。

微软机器人框架结束callback

我正在用Nodejs开发一个使用Microsoft Bot框架的Chatbot,并且我想使用无服务器框架在aws lambda上部署这个框架,但是为了做到这一点,我需要调用lambdacallback函数。 我无法find处理消息时如何callback(保存的数据并发送了所有必要的消息)。 我试图模拟响应,并调用callback,但它没有工作,微软僵尸框架继续处理消息,这里是当前处理程序我有 'use strict'; const DynamoDbStorage = require('./dynamo-db-storage').DynamoDbStorage let storage = new DynamoDbStorage() const connector = require('./channel')(storage) module.exports.message = (event, context, callback) => { connector.verifyBotFramework(context, getHandler(callback)); }; function getHandler(callback) { let status = 200 return { status: (code) => { status = code }, send: (data) => { const response = { […]

debugging“serverless-webpack”:GraphQL错误:Lambda services-publishService在调用期间抛出一个错误

使用“无服务器-webpack”,试图部署。 我发出SLS_DEBUG=* sls deploy –verbose ,一切正常,直到: Serverless: Couldn't publish this deploy information to the Serverless Platform. Error ————————————————– GraphQL error: Lambda services-publishService threw an Error during invocation For debugging logs, run again after setting the "SLS_DEBUG=*" environment variable. Stack Trace ——————————————– Error: GraphQL error: Lambda services-publishService threw an Error during invocation at new ApolloError (/Users/jamesfishwick/Documents/get-mobile-screen/node_modules/apollo-client/apollo.umd.js:1975:28) […]

我如何在AWS Lambda上安装GraphicsMagick或ImageMagick?

我正在使用Node.js的gm包以及AWS Lambda上提供的默认ImageMagick安装。 const gm = require('gm').subClass({ imageMagick: true }); 出于某种原因,某些图像的大小调整function失败。 我使用Amazon Linux AMI创build了一个EC2实例(ami-hvm-2016.03.3.x86_64-gp2)。 我安装了yum提供的ImageMagick(旧)6.x版本。 当我使用EC2实例上的安装来运行我的脚本时,它再现了我在Lambda上运行代码时看到的故障,确认这是导致故障的IM版本。 如果我安装GrpahicsMagick与sudo yum install GraphicsMagick 。 这允许我的脚本无误地执行调整。 const gm = require('gm').subClass({ imageMagick: false }); 不过,我不知道如何将这个与无服务器部署捆绑在一起。 如果我使用sudo yum –installroot=/var/task install GraphicsMagick到脚本所在的文件夹中,并使用这个require语句来运行我的脚本: const gm = require('gm').subClass({ imageMagick: false, appPath: './usr/bin/' }); 当我在EC2实例上运行我的脚本时,resize工作。 但是,当我使用无服务器进行部署时,脚本在Lambda中运行时,可执行文件似乎已损坏。 gm在调用gm(buffer).size(/*…*/)出现以下错误。 could not get the image size: ERR: {"code":"EPIPE","errno":"EPIPE","syscall":"write"} 我如何构build可以使用无服务器部署的ImageMagick或GraphicsMagick版本?