Expected Behavior
I expect the parsing event document to work: https://docs.powertools.aws.dev/lambda/typescript/latest/utilities/parser/#parse-events
Current Behavior
When I implement such code, I ended with the error:
ParseError: Failed to parse schema.
Because no envelope was set.
Code snippet
My failing code:
import { newNetsuiteUserSchema } from '@/packages/core/model/netsuite';
import middy from '@middy/core';
import { parser } from '@aws-lambda-powertools/parser/middleware';
import { APIGatewayProxyEventV2Schema } from '@aws-lambda-powertools/parser/schemas';
import { z } from 'zod';
export const baseHandler = async (event: z.infer<typeof newNetsuiteUserSchema>) => {
return {
statusCode: 200,
body: JSON.stringify(event),
};
};
export const handler = middy(baseHandler).use(parser({ schema: newNetsuiteUserSchema }));
with:
export const newNetsuiteUserSchema = z.object({
firstName: z.string().min(1),
lastName: z.string().min(1),
email: z.string().email().min(1),
role: z.nativeEnum(UserRoles),
custentity_lba_customer_center_access: z.string().min(1),
});
Steps to Reproduce
I am using SST (sst.dev) to build my project.
Possible Solution
I think it's mandatory to specify the envelope like that:
import { newNetsuiteUserSchema } from '@/packages/core/model/netsuite';
import middy from '@middy/core';
import { parser } from '@aws-lambda-powertools/parser/middleware';
import { APIGatewayProxyEventV2Schema } from '@aws-lambda-powertools/parser/schemas';
import { z } from 'zod';
import { ApiGatewayV2Envelope } from '@aws-lambda-powertools/parser/envelopes';
export const baseHandler = async (event: z.infer<typeof newNetsuiteUserSchema>) => {
return {
statusCode: 200,
body: JSON.stringify(event),
};
};
export const handler = middy(baseHandler).use(
parser({ schema: newNetsuiteUserSchema, envelope: ApiGatewayV2Envelope })
);
Powertools for AWS Lambda (TypeScript) version
latest (2.5.0-beta)
AWS Lambda function runtime
20.x
Packaging format used
npm
Execution logs
},
{
"expected": "'Admin' | 'User'",
"received": "undefined",
"code": "invalid_type",
"path": [
"role"
],
"message": "Required"
},
{
"code": "invalid_type",
"expected": "string",
"received": "undefined",
"path": [
"custentity_lba_customer_center_access"
],
"message": "Required"
}
].
at parse (/Users/julien/work/lab/customer-center/node_modules/.pnpm/@aws-lambda-powertools+parser@2.5.0-beta_@middy+core@5.4.3_zod@3.23.8/node_modules/@aws-lambda-powertools/parser/lib/esm/parser.js:41:15)
at before (/Users/julien/work/lab/customer-center/node_modules/.pnpm/@aws-lambda-powertools+parser@2.5.0-beta_@middy+core@5.4.3_zod@3.23.8/node_modules/@aws-lambda-powertools/parser/lib/esm/middleware/parser.js:33:25)
at runMiddlewares (/Users/julien/work/lab/customer-center/node_modules/.pnpm/@middy+core@5.4.3/node_modules/@middy/core/index.js:230:23)
at runRequest (/Users/julien/work/lab/customer-center/node_modules/.pnpm/@middy+core@5.4.3/node_modules/@middy/core/index.js:154:11)
at middyHandler (/Users/julien/work/lab/customer-center/node_modules/.pnpm/@middy+core@5.4.3/node_modules/@middy/core/index.js:43:12)
at file:///Users/julien/work/lab/customer-center/node_modules/.pnpm/sst@2.43.4_@aws-sdk+client-sso-oidc@3.606.0_@aws-sdk+client-sts@3.606.0_aws-crt@1.21.3__aws-c_gdj3g64c23iicrgcjjtaychpzi/node_modules/sst/support/nodejs-runtime/index.mjs:148:22
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
Expected Behavior
I expect the parsing event document to work: https://docs.powertools.aws.dev/lambda/typescript/latest/utilities/parser/#parse-events
Current Behavior
When I implement such code, I ended with the error:
Because no
envelopewas set.Code snippet
My failing code:
with:
Steps to Reproduce
I am using SST (sst.dev) to build my project.
Possible Solution
I think it's mandatory to specify the envelope like that:
Powertools for AWS Lambda (TypeScript) version
latest (2.5.0-beta)
AWS Lambda function runtime
20.x
Packaging format used
npm
Execution logs
}, { "expected": "'Admin' | 'User'", "received": "undefined", "code": "invalid_type", "path": [ "role" ], "message": "Required" }, { "code": "invalid_type", "expected": "string", "received": "undefined", "path": [ "custentity_lba_customer_center_access" ], "message": "Required" } ]. at parse (/Users/julien/work/lab/customer-center/node_modules/.pnpm/@aws-lambda-powertools+parser@2.5.0-beta_@middy+core@5.4.3_zod@3.23.8/node_modules/@aws-lambda-powertools/parser/lib/esm/parser.js:41:15) at before (/Users/julien/work/lab/customer-center/node_modules/.pnpm/@aws-lambda-powertools+parser@2.5.0-beta_@middy+core@5.4.3_zod@3.23.8/node_modules/@aws-lambda-powertools/parser/lib/esm/middleware/parser.js:33:25) at runMiddlewares (/Users/julien/work/lab/customer-center/node_modules/.pnpm/@middy+core@5.4.3/node_modules/@middy/core/index.js:230:23) at runRequest (/Users/julien/work/lab/customer-center/node_modules/.pnpm/@middy+core@5.4.3/node_modules/@middy/core/index.js:154:11) at middyHandler (/Users/julien/work/lab/customer-center/node_modules/.pnpm/@middy+core@5.4.3/node_modules/@middy/core/index.js:43:12) at file:///Users/julien/work/lab/customer-center/node_modules/.pnpm/sst@2.43.4_@aws-sdk+client-sso-oidc@3.606.0_@aws-sdk+client-sts@3.606.0_aws-crt@1.21.3__aws-c_gdj3g64c23iicrgcjjtaychpzi/node_modules/sst/support/nodejs-runtime/index.mjs:148:22 at process.processTicksAndRejections (node:internal/process/task_queues:95:5)