Skip to content

Bug: Kinesis Firehose SQS Record schema should fail parsing if data is invalid #3249

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
dreamorosi opened this issue Oct 23, 2024 · 4 comments · Fixed by #3526
Closed

Bug: Kinesis Firehose SQS Record schema should fail parsing if data is invalid #3249

dreamorosi opened this issue Oct 23, 2024 · 4 comments · Fixed by #3526
Assignees
Labels
bug Something isn't working completed This item is complete and has been merged/shipped parser This item relates to the Parser Utility

Comments

@dreamorosi
Copy link
Contributor

Expected Behavior

As per title, when working with a Kinesis Firehose event that contains a SQS event in the data field, if the field is not a valid SQS event the entire parsing should fail.

Current Behavior

Currently if this happens, the parsing is successful and the data is returned as-is.

Code snippet

N/A

Steps to Reproduce

N/A

Possible Solution

The schema should be modified from this:

const KinesisFirehoseSqsRecordSchema = KinesisFireHoseRecordBase.extend({
  data: z.string().transform((data) => {
    try {
      return SqsRecordSchema.parse(
        JSON.parse(Buffer.from(data, 'base64').toString('utf8'))
      );
    } catch (e) {
      return data;
    }
  }),
});

to something like this:

const KinesisFirehoseSqsRecordSchema = KinesisFireHoseRecordBase.extend({
  data: z.string().transform((data, ctx) => {
    try {
      return SqsRecordSchema.parse(
        JSON.parse(Buffer.from(data, 'base64').toString('utf8'))
      );
    } catch (e) {
      ctx.addIssue({
        code: z.ZodIssueCode.custom,
        message: 'Failed to parse SQS record',
        fatal: true,
      });

      return z.NEVER;
    }
  }),
});

Powertools for AWS Lambda (TypeScript) version

latest

AWS Lambda function runtime

20.x

Packaging format used

npm

Execution logs

No response

@dreamorosi dreamorosi added bug Something isn't working confirmed The scope is clear, ready for implementation parser This item relates to the Parser Utility labels Oct 23, 2024
@dreamorosi dreamorosi moved this from Triage to Backlog in Powertools for AWS Lambda (TypeScript) Oct 23, 2024
@dreamorosi
Copy link
Contributor Author

While working on this, if picked up after #3248, remove change the corresponding unit test from it.fails to it in the packages/parser/tests/unit/schema/kinesis-firehose.test.ts file.

@svozza
Copy link
Contributor

svozza commented Nov 30, 2024

Happy to pick this up if you want. Seems like a very straightforward change.

Copy link
Contributor

⚠️ COMMENT VISIBILITY WARNING ⚠️

This issue is now closed. Please be mindful that future comments are hard for our team to see.

If you need more assistance, please either tag a team member or open a new issue that references this one.

If you wish to keep having a conversation with other community members under this issue feel free to do so.

@github-actions github-actions bot added pending-release This item has been merged and will be released soon and removed confirmed The scope is clear, ready for implementation labels Jan 24, 2025
Copy link
Contributor

This is now released under v2.13.1 version!

@github-actions github-actions bot added completed This item is complete and has been merged/shipped and removed pending-release This item has been merged and will be released soon labels Jan 28, 2025
@dreamorosi dreamorosi moved this from Coming soon to Shipped in Powertools for AWS Lambda (TypeScript) Jan 28, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working completed This item is complete and has been merged/shipped parser This item relates to the Parser Utility
Projects
3 participants