【问题标题】:json schema validation on aws lambdaaws lambda上的json模式验证
【发布时间】:2017-01-11 20:20:42
【问题描述】:

我需要验证我的 aws lambda 事件架构。我使用 vandium 进行验证。我有两种不同的情况。

  1. lambda 函数仅支持一种类型的事件。

喜欢这个

var vandium = require('vandium');

vandium.validation({
    name: vandium.types.string().required()
});

exports.handler = vandium(function (event, context, callback) {
    console.log('hello: ' + event.name);
    callback(null, 'Hello from Lambda');
});

在这种情况下,vandium 仅验证 key 是否存在。但我需要检查是否存在任何额外的密钥。

  1. lambda 函数支持多种类型的事件。

喜欢这个

var vandium = require('vandium');

vandium.validation({

    operation: vandium.types.string().required(),
    name: vandium.types.string().required(), });

exports.handler = vandium(function (event, context, callback) {

    const operation = event.operation;
    switch (operation) {
        case 'test1':
            test1(event);
            break;
        case 'test2':
            test2(event);
            break;

        default:
            callback(new Error("Unrecognized operation=" + operation));
            break;
    }


    function test1(event) {
        //console.log('hello: ' + event.name);
        callback(null, 'Hello from Lambda');
    }

    function test2(event) {
        //console.log('hello: ' + event.name);
        callback(null, 'Hello from Lambda');
    }

});

在这种情况下,test1 和 test2 的事件是不同的。像这样

test1{"name":"hello","id":100 }

test2{"schoolName":"threni","teacher":"abcd" }

  1. 对于类似问题的最佳 scema 验证 npm 包 这?
  2. vandium是否适合json验证。?

【问题讨论】:

  • 您好,您的 lambda 函数中的 JSON 验证成功了吗?你到底有没有用过ajv?

标签: node.js amazon-web-services npm aws-lambda json-schema-validator


【解决方案1】:

你看过ajv 吗?比如Validating Data With JSON-Schema

【讨论】:

  • 在 lambda 函数中使用 ajv 有什么乐趣吗?虽然它没有错误,但我无法执行任何验证。
【解决方案2】:

对于那些需要在 aws lambda 函数上验证事件的人,@middy/validator 会有所帮助。在本示例中,您需要 第 1 步:

import validator from '@middy/validator';

第二步:定义架构

const schema = {
  properties: {
    body: {
      type: 'object',
      properties: {
        name: {
          type: 'string',
        },
      },
      required: ['name'],
    },
  },
  required: ['body'],
};

第三步:使用验证器中间件

export const handler = Your_Lambda_Function
  .use(validator({ inputSchema: schema }));

【讨论】:

    猜你喜欢
    • 2021-05-18
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多