我正在尝试使用该serverless框架来创建和部署AWS Lambda函数.我创建了一个vendored在项目根目录中命名的文件夹,并安装(使用pip install)函数依赖项.但是,每当我尝试运行它(使用serverless function run)时,我都会收到错误:
无服务器:运行isNewUser ...
无服务器:警告:此变量未定义:区域
无服务器:-----------------
无服务器:失败 - 返回此错误:
无服务器:{"异常":["Traceback(最近一次调用最后一次):\n","File \"/ home/fernando/.nvm/versions/node/v5.10.1/bin/serverless-run-python-handler \",line 170,在\n handler = import_program_as_module(path)\n","File \"/ home/fernando/.nvm/versions/node/v5.10.1/bin/serverless-run-python-handler \",第149行,在import_program_as_module \n module = make_module_from_file('lambda_handler',handler_file)\n","File \"/ home/fernando/.nvm/versions/node/v5.10.1/bin/serverless-run-python-handler \",第129行,在make_module_from_file \n py_source_description \n","File \"/ home/fernando/workspace/os-cac/isNewUser/handler.py \",第11行,在\n中从vtex.order import Order \n" ,"ImportError:没有名为vtex.order的模块\n"],"成功":false}无服务器:来自Python
无服务器的异常消息:Traceback(最近一次调用最后一次):,Fil e"/home/fernando/.nvm/versions/node/v5.10.1/bin/serverless-run-python-handler",第170行,处理程序= import_program_as_module(路径),文件"/home/fernando/.nvm/版本/ node/v5.10.1/bin/serverless-run-python-handler",第149行,在import_program_as_module模块中= make_module_from_file('lambda_handler',handler_file),文件"/home/fernando/.nvm/versions/node/v5 .10.1/bin/serverless-run-python-handler",第129行,在make_module_from_file py_source_description,文件"/home/fernando/workspace/os-cac/isNewUser/handler.py",第11行,来自vtex.order import Order,ImportError:没有名为vtex.order的模块`
vtex.order 是在handler.py中导入的模块
我的项目结构如下:
/root/
|
|--_meta/
|--vendored/
|--dependencies...
|--function-name/
|--handler.py
|--event.json
|--s-function.json
|--requirements.txt
|--admin.env
|--package.json
|--s-project.json
|--s-resources-cf.json
|--s-project.json
Run Code Online (Sandbox Code Playgroud)
有什么我做错了吗?我应该以某种方式配置我的功能以包括来自vendored的依赖项?
我安装了NodeJS,似乎工作正常.运行npm工作正常,我可以安装包.然后我跑了
npm install serverless -g
Run Code Online (Sandbox Code Playgroud)
这也很好.但是当我尝试运行时:
serverless
Run Code Online (Sandbox Code Playgroud)
在Windows命令提示符下,我收到有关未找到命令的错误.
'serverless' is not recognized as an internal or external command,
operable program or batch file.
Run Code Online (Sandbox Code Playgroud)
我的答案如下.
我一直在研究这个项目,因为让整个系统成为Lambda函数集合的想法似乎非常有吸引力.事实上,几年前我写了一些与MoonMail几乎完全相同的软件,并且由于某些规格已经改变而需要更新.我正在评估将我的软件移植到Lambda或只是调整使用MoonMail的东西.
我有以下问题:
在我使用Serverless的测试中,我注意到当我更改资源名称(如DynamoDb表的名称)并重新部署时,没有警告,旧表及其内容被销毁.我认为像配置文件中的额外字符这样的简单错误导致删除数据库中的所有数据是非常危险的.你是如何处理这类问题的?
关于通过SES发送电子邮件.当您达到特定帐户的发送限制时,如何处理限制?你做指数退避吗?我似乎无法在代码库中找到它.如果你能指出我在回购的一般区域发生这种情况,我将非常感激.
我正在开发一个无服务器的Web应用程序,我正在尝试为DynamoDB表创建一个CloudFormation YAML模板.文档说明表中的每个属性都应遵循下面的样式,其中AttributeType可以是'S','N'或'B',用于字符串,数字或二进制.
AttributeName:String
AttributeType:String
我的表包含地图属性.如何将它们包含在模板中?
我正在尝试使用无服务器框架来创建使用开放天气NPM模块的Lambda函数.但是,我得到以下异常,但我的node_modules包含特定的库.
我成功运行了样本,(https://github.com/serverless/examples/tree/master/aws-node-rest-api-with-dynamodb),现在黑客添加节点模块来集成开放天气API .
Endpoint response body before transformations: {"errorMessage":"Cannot find module 'Openweather-Node'","errorType":"Error","stackTrace":["Module.require (module.js:353:17)","require (internal/module.js:12:17)","Object.<anonymous> (/var/task/todos/weather.js:4:17)","Module._compile (module.js:409:26)","Object.Module._extensions..js
Run Code Online (Sandbox Code Playgroud)
我的代码
'use strict';
const AWS = require('aws-sdk'); // eslint-disable-line import/no-extraneous-dependencies
var weather = require('Openweather-Node');
const dynamoDb = new AWS.DynamoDB.DocumentClient();
module.exports.weather = (event, context, callback) => {
const params = {
TableName: process.env.DYNAMODB_TABLE,
Key: {
id: event.pathParameters.id,
},
};
weather.setAPPID("mykey");
//set the culture
weather.setCulture("fr");
//set the forecast type
weather.setForecastType("daily");
const response = {
statusCode: 200,
body: "{test response}",
};
callback(null, response);
};
Run Code Online (Sandbox Code Playgroud) amazon-web-services node.js aws-sdk aws-lambda serverless-framework
我最近开始使用GraphQL,并且能够在AWS Lambda上成功设置它,为我提供了"无服务器"架构.但是,我想利用GraphQL订阅来获得更多实时功能.
我了解AWS Lambda不允许使用WebSockets,因为只要函数运行或达到超时限制,连接就会持续.
但是有没有办法设置GraphQL后端,以便它可以利用订阅并将其保留在AWS服务中,并使其像"无服务器"应用程序一样扩展.
类似于使用AWS Lambda进行GraphQL查询和变异,然后使用不同的AWS服务进行GraphQL订阅.
aws-lambda graphql serverless-framework graphql-subscriptions aws-appsync
我正在使用无服务器框架.我的Lambda函数连接到DynamoDB表以更新表中的项目.表的读写容量单位为5,禁用auto_scaling.AWS Lambda函数分配了128MB内存.
我已经使用Jmeter进行性能测试.我已经同时发送了1000个请求,一些响应给了我完美的输出,而其他给出了内部服务器错误(502 Bad Gateway).我还分析了cloudwatch的日志,只获得了Task Timeout错误.任何人都可以建议我为什么我得到这个错误,以及如何解决它?
lambda amazon-web-services amazon-dynamodb serverless-framework api-gateway
我正在尝试在 cloudformation 中为 cloudfront 分布引用边缘 lambda。
我现在拥有的是:
LambdaFunctionARN:
Fn::GetAtt: [BasicAuthLambdaFunction,Arn]
Run Code Online (Sandbox Code Playgroud)
但我收到此错误:
发生错误:GGGCloudFrontDistribution - 函数 ARN 必须引用特定的函数版本。(ARN 必须以版本号结尾。)
那么..是否有某种技术可以引用该功能的最新版本?
amazon-web-services amazon-cloudfront aws-cloudformation serverless-framework
是否可以创建无服务器框架Lambda部署,其中Lambda部署到现有VPC的SecurityGroup中?我不希望服务部署或它的堆栈拥有一个网络工件?
aws-cloudformation aws-sdk aws-lambda aws-api-gateway serverless-framework
我正在使用无服务器来部署我使用自定义资源迁移RDS数据库的应用程序.
我部署时一切正常,但是当我删除堆栈后一小时后自定义资源超时,并显示消息"自定义资源无法在预期时间内稳定".对预先签名的AWS S3 URL的请求将返回403错误代码AccessDenied.
我的第一个发送的,成功的响应主体到预先签名的URL(在创建时):
{
"Status": "SUCCESS",
"RequestId": "bd487606-8017-49f2-99af-b29b2bbad40b",
"LogicalResourceId": "SheltersDBMigrationTrigger",
"StackId": "arn:aws:cloudformation:us-east-1:848139458219:stack/update-shelters-dev/c08a80e0-2e4e-11e9-87a6-124d1eab42ba",
"PhysicalResourceId": "DB_MIGRATION"
}
Run Code Online (Sandbox Code Playgroud)
我的第二个发送,失败的响应正文到预先签名的URL(删除时):
{
"Status": "SUCCESS",
"RequestId": "2d166d36-7c0c-4848-9eb5-aedaf5e9172c",
"LogicalResourceId": "SheltersDBMigrationTrigger",
"StackId": "arn:aws:cloudformation:us-east-1:848139458219:stack/update-shelters-dev/c08a80e0-2e4e-11e9-87a6-124d1eab42ba",
"PhysicalResourceId": "DB_MIGRATION"
}
Run Code Online (Sandbox Code Playgroud)
lambda.go:
func handler(ctx context.Context, event cfn.Event) (rid string, data map[string]interface{}, err error) {
rid = "DB_MIGRATION"
if event.RequestType != cfn.RequestCreate {
return
}
db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@(%s)/", os.Getenv("DB_MASTER_USER"), os.Getenv("DB_MASTER_PASSWORD"), os.Getenv("DB_ADDRESS")))
if err != nil {
panic(err)
}
defer db.Close()
defer func() …Run Code Online (Sandbox Code Playgroud) amazon-s3 amazon-web-services aws-cloudformation aws-lambda serverless-framework
aws-lambda ×6
node.js ×3
aws-sdk ×2
lambda ×2
amazon-s3 ×1
api-gateway ×1
aws-appsync ×1
graphql ×1
moonmail ×1
python ×1