小编das*_*mug的帖子

在无服务器lambda中返回HTTP错误代码的正确方法是什么

我有一个用Node.JS编写的无服务器lambda函数.

返回错误代码的最佳/正确方法是什么?

我现在使用的模式(它的工作原理!)是:

module.exports.endpoint = (event, context, callback) => {
    const response = {
        statusCode: 404,
        body: JSON.stringify({ message: 'Hello World!' })
    };
    callback(null, response);
}
Run Code Online (Sandbox Code Playgroud)

当我拨打电话时,例如从POSTMAN到我的终端,我得到:

Status: 404 Not Found正是我所期待的.

而且,在日志中我可以看到:

Serverless: GET / (?: get)
Serverless: [404] {"statusCode":404,"body":"{\"message\":\"Hello World!\"}"}
Run Code Online (Sandbox Code Playgroud)

这很好用.

令我困扰的是,我正在传递null错误.看看其他一些教程/示例我发现了以下模式:

https://aws.amazon.com/blogs/compute/error-handling-patterns-in-amazon-api-gateway-and-aws-lambda/

https://serverless.com/framework/docs/providers/aws/events/apigateway/

callback ("the sky is falling!");

callback("[BadRequest] Validation error: Missing field 'name'");

callback("[404] Not Found");

callback(new Error('[404] Not found'));

callback(JSON.stringify(myErrorObj));

所有这些都很有意义,你可以指定HTTP状态代码 - 但我最终获得的是HTTP状态代码200.当我查看日志时,我可以看到错误是在200之后:

Serverless: GET / (?: get)
Serverless: …
Run Code Online (Sandbox Code Playgroud)

node.js aws-lambda aws-api-gateway serverless-framework serverless

3
推荐指数
1
解决办法
4260
查看次数

使用 django-filter,是否有一种快速方法来支持所有可能的字段查找?

django-filter允许您轻松声明模型的可过滤字段。

例如,

class UserFilter(django_filters.FilterSet):
    class Meta:
        model = User
        fields = ['username']
Run Code Online (Sandbox Code Playgroud)

提供与此等效的字段exact的查找...username

class UserFilter(django_filters.FilterSet):
    class Meta:
        model = User
        fields = {
            'username': ['exact']
        }
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种支持给定字段的所有可能的查找过滤器的方法,这样我就不必这样做:

class UserFilter(django_filters.FilterSet):
    class Meta:
        model = User
        fields = {
            "username": ["exact", "iexact", "contains", "icontains", "startswith", ..., etc.]
        }
Run Code Online (Sandbox Code Playgroud)

python django django-filter

3
推荐指数
1
解决办法
1115
查看次数

angularjs ng-grid计算列

我正在尝试使用AngularJSng-grid模拟电子表格.我的需求很简单但我无法找到任何可以帮助我修复代码的地方.

我有一个简单的分数表,在最后一栏我需要一个" 总分 "列.

你可以在这个插件中看到我的代码.

我的问题是虽然我能够在document.load的每一行中获得总数,但是无论何时更改任何分数,我都无法更新" 总计 "列.

angularjs ng-grid

2
推荐指数
1
解决办法
1万
查看次数

如何将所有npm依赖项告诉lambda?

我正在阅读有关如何编写Node Restful App的教程

https://github.com/mjhea0/node-postgres-promises

我想将此应用程序作为lambda函数运行。我担心的是依赖管理。

如何将所有npm依赖项告诉lambda?

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var pug = require('pug');
var routes = require('./routes/index');
Run Code Online (Sandbox Code Playgroud)

在本教程中,它们确实做到了npm install,而aws毫无用处,我们没有像这样的cli命令的概念。

node.js aws-lambda

2
推荐指数
1
解决办法
2397
查看次数

无服务器 lambda 全局环境变量

我正在使用无服务器,并且试图弄清楚如何重写此 serverless.yml 文件,这样我就不会重复每个函数的环境变量。有没有办法全局设置环境变量?

service: test-api
frameworkVersion: ">=1.2.0 <2.0.0"
provider:
  name: aws
  runtime: nodejs12.x
  timeout: 30
  stage: dev
  memorysize: 2048
  region: us-east-2
  logRetentionInDays: 21

functions:
  doCreate:
    handler: functions/do-create.handler
    environment:
      DB_PORT: ${ssm:/${self:custom.stage}/db_port}
      DB_URL: ${ssm:/${self:custom.stage}/db_url}
      API_KEY: ${ssm:/${self:custom.stage}/api_key}
      ENV: "${self:custom.stage}"
      SEARCH_ARN: ${ssm:/${self:custom.stage}/search_arn}
  doUpdate:
    handler: functions/do-update.handler
    environment:
      DB_PORT: ${ssm:/${self:custom.stage}/db_port}
      DB_URL: ${ssm:/${self:custom.stage}/db_url}
      API_KEY: ${ssm:/${self:custom.stage}/api_key}
      ENV: "${self:custom.stage}"
      SEARCH_ARN: ${ssm:/${self:custom.stage}/search_arn}
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-lambda serverless-framework serverless

2
推荐指数
1
解决办法
887
查看次数

AWS Lambda 中的多处理

我试图使用 Dynamodb 流和 ProcessPoolExecutor 同时触发 lambda。这是我收到的错误。

场景是当一堆记录(例如 1000 条记录)落入 dynamodb(批量大小 10)时,流会触发 lambda。我之前使用过 ThreadPoolExecutor,它可以工作,但是在一个批次的 10 个进程中,只有 5-8 条记录被处理,剩下的就剩下了。每条记录大约需要 50 秒才能完成。AWS lambda 的 5 分钟限制是否跳过了 ThreadPoolExecutor 中的其他记录。另外,使用 ProcessPoolExecutor 将帮助我解决 ThreadPoolExecutor 的问题???

    [Errno 38] Function not implemented: OSError
    Traceback (most recent call last):
    File "/var/task/ycf_calculator.py", line 464, in main
    with ProcessPoolExecutor(max_workers=25) as executor:
    File "/var/lang/lib/python3.6/concurrent/futures/process.py", line 390, in __init__
    EXTRA_QUEUED_CALLS)
    File "/var/lang/lib/python3.6/multiprocessing/context.py", line 102, in Queue
    return Queue(maxsize, ctx=self.get_context())
    File "/var/lang/lib/python3.6/multiprocessing/queues.py", line 42,in __init__
    self._rlock = ctx.Lock()
    File "/var/lang/lib/python3.6/multiprocessing/context.py", line 67, in Lock …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services python-3.x aws-lambda

1
推荐指数
1
解决办法
4902
查看次数

我在python lambda处理程序中找不到回调参数

我正在研究aws lambda-lex,我发现用node.js编写了咖啡机器人示例代码。

// --------------- Main handler -----------------------
// --------------- in node.js -----------------------

// Route the incoming request based on intent.
// The JSON body of the request is provided in the event slot.

exports.handler = (event, context, callback) => {
    try {
        dispatch(event, (response) => callback(null, response));
    } catch (err) {
        callback(err);
    }
};
Run Code Online (Sandbox Code Playgroud)

我想使用回调参数,但在python中找不到

// --------------- Main handler -----------------------
// --------------- in python -----------------------

def lambda_handler(event, context):    
    dispatch(event)

# >>> this handler doesn't include callback <<<
Run Code Online (Sandbox Code Playgroud)

如果需要,将两者进行比较

python文档 vs …

python amazon-web-services node.js aws-lambda

0
推荐指数
1
解决办法
2066
查看次数