dherault / serverless-offline

Emulate AWS λ and API Gateway locally when developing your Serverless project
MIT License
5.16k stars 794 forks source link

feat: convert multipart/form-data to base64 encoded payloads #1776

Closed cnuss closed 2 months ago

cnuss commented 2 months ago

Description

AWS API Gateway V2 sets isBase64Encoded: true and Base64 encodes body when the Content-Type is multipart/form-data.

Here's an event I captured from CloudWatch logs:

  event: {
    version: '2.0',
    routeKey: 'ANY /{proxy+}',
    rawPath: '/api/file',
    rawQueryString: '',
    cookies: [
      '__Secure-access=REDACTED',
      '__Secure-refresh=REDACTED'
    ],
    headers: {
      accept: 'application/json',
      'accept-encoding': 'gzip, deflate, br, zstd',
      'accept-language': 'en-US,en;q=0.9',
      'content-length': '77988',
      'content-type': 'multipart/form-data; boundary=----WebKitFormBoundaryfUJ9q6d7RNVDaA9B',
      host: 'g9kcjnmfv2.execute-api.us-east-1.amazonaws.com',
      origin: 'https://g9kcjnmfv2.execute-api.us-east-1.amazonaws.com',
      referer: 'https://g9kcjnmfv2.execute-api.us-east-1.amazonaws.com/api/swagger.html',
      'sec-ch-ua': '"Google Chrome";v="123", "Not:A-Brand";v="8", "Chromium";v="123"',
      'sec-ch-ua-mobile': '?0',
      'sec-ch-ua-platform': '"macOS"',
      'sec-fetch-dest': 'empty',
      'sec-fetch-mode': 'cors',
      'sec-fetch-site': 'same-origin',
      'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36',
      'x-amzn-trace-id': 'Root=1-661dfa6e-51b553562114a58a1327fa28',
      'x-forwarded-for': '136.226.56.198',
      'x-forwarded-port': '443',
      'x-forwarded-proto': 'https'
    },
    requestContext: {
      accountId: '471112697609',
      apiId: 'g9kcjnmfv2',
      domainName: 'g9kcjnmfv2.execute-api.us-east-1.amazonaws.com',
      domainPrefix: 'g9kcjnmfv2',
      http: [Object],
      requestId: 'WTQRXhwfoAMEV6g=',
      routeKey: 'ANY /{proxy+}',
      stage: '$default',
      time: '16/Apr/2024:04:11:26 +0000',
      timeEpoch: 1713240686818
    },
    pathParameters: { proxy: 'api/file' },
    body: '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b3JlIDYuMC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+NTk2PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjExMDg8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpVc2VyQ29tbWVudD5TY3JlZW5zaG90PC9leGlmOlVzZXJDb21tZW50PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KtcB8QQAAABxpRE9UAAAAAgAAAAAAAAEqAAAAKAAAASoAAAEqAACjIM6kpLYAAEAASURBVHgB7J0FfBRHG8Zf3Iq1WOlHi1uRFncpVopT3N2d4O7u7u7uVtzdtbi7W7D93nfS3exJLnfkApfwTH/J7s7Ozs7+Zy9lnnslxNu3bzVCAQEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQcJpACAgqTrNCQxAAARAAARAAARAAARAAARAAARAAARBQBCCo4EUAARAAARAAARAAARAAARAAARAAARAAARcJQFBxERiagwAIgAAIgAAIgAAIgAAIgAAIgAAIgAAEFbwDIAACIAACIAACIAACIAACIAACIAACIOAiAQgqLgJDcxAAARAAARAAARAAARAAARAAARAAARCAoIJ3AARAAARAAARAAARAAARAAARAAARAAARcJABBxUVgaA4CIAACIAACIAACIAACIAACIAACIAACEFTwDoAACIAACIAACIAACIAACIAACIAACICAiwQgqLgIDM1BAARAAARAAARAAARAAARAAARAAARAAIIK3gEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQcJFAoAsqmqZRiBAhXBwWmoMACIAACIAACIAACIAACIAACIAACICAYwJfU3Nwu6Dy/v17+vDhA338+FFtP336RPKAKCAAAiAAAiAAAiAAAiAAAiAAAiAAAiDgTgJiwBEyZEgKHTo0hQoVSm3DhAnjzlv42ZfbBBVvb28SMeXdu3eGgCIPJT+wUPGTP06AAAiAAAiAAAiAAAiAAAiAAAiAAAh8JgEx4BBDDvmRIvpD2LBhSUSVcOHCfWavzl0WYEFFrFFETHn79q26oww8QoQIauCiEKGAAAiAAAiAAAiAAAiAAAiAAAiAAAiAQGAS0LWJN2/eKEMPuVf48OEDVZsIkKAi1igipshW1J/IkSOrAQcmJPQNAiAAAiAAAiAAAiAAAiAAAiAAAiAAAn4REIOPFy9eKC8aMfoQSxXZurt8tqAiIoooP6ICRYoUiaJGjerusaE/EAABEAABEAABEAABEAABEAABEAABEPgsAs+ePaNXr16puCriSeNuUeWzBBURUXQzGrFKkR8UEAABEAABEAABEAABEAABEAABEAABEPAkAmKpIj96eBJ3hib5LEFFFB4xoYFliie9JhgLCIAACIAACIAACIAACIAACIAACICANQHdUkViqoiO4a7isqAiMVNevnypYqbEjBnTXeNAPyAAAiAAAiAAAiAAAiAAAiAAAiAAAiAQKAQePHigYqp89913bsv+47KgImKKiCrff/89AtAGyjSjUxAAARAAARAAARAAARAAARAAARAAAXcSEC+bx48fKzFFRBV3FJcElffv3yvfI8noEyNGDHfcH32AAAiAAAiAAAiAAAiAAAiAAAiAAAiAQKATePjwobJSkTiwomsEtLgkqEgg2tevX6uMPu70OwroQ+B6EAABEAABEAABEAABEAABEAABEAABEHBEQOLBSjyViBEjkmT9CWhxSVDR3X1ixYql0g4F9Oa4HgRAAARAAARAAARAAARAAARAAARAAAS+BAHJWHz//n23uf24JKg8ffqUNE2jOHHifIlnxT1AAARAAARAAARAAARAAARAAARAAARAwG0E7t69SyFChKBo0aIFuE+nBRURUp48eUKhQoUisVBBAQEQAAEQAAEQAAEQAAEQAAEQAAEQAIGgREAsVD5+/KgS7QR03E4LKnKjR48eIV1yQInjehAAARAAARAAARAAARAAARAAARAAga9CQE+f/MMPPwT4/hBUAowQHYAACIAACIAACIAACIAACIAACIAACAQFAhBUgsIsYYwgAAIgAAIg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'... 93984 more characters,
    isBase64Encoded: true
  },
  context: {
    callbackWaitsForEmptyEventLoop: [Getter/Setter],
    succeed: [Function (anonymous)],
    fail: [Function (anonymous)],
    done: [Function (anonymous)],
    functionVersion: '$LATEST',
    functionName: 'stack-express-pr-14-webapp',
    memoryLimitInMB: '1024',
    logGroupName: '/aws/lambda/stack-express-pr-14-webapp',
    logStreamName: '2024/04/16/[$LATEST]bd1b32cb599348439dc8e5501b5be483',
    clientContext: undefined,
    identity: undefined,
    invokedFunctionArn: 'arn:aws:lambda:us-east-1:471112697609:function:stack-express-pr-14-webapp',
    awsRequestId: 'fcd7b1d2-29be-4867-a186-7dcd001f01a0',
    getRemainingTimeInMillis: [Function: getRemainingTimeInMillis]
  }
}

Motivation and Context

Motivation is to have consistency with actual API Gateway V2.

How Has This Been Tested?

I added tests, but please let me know if you'd like to see more! Happy for any and all suggestions.

cnuss commented 2 months ago

hi @dnalborczyk! let me know what you and the other maintainers think of this PR, cheers!

cnuss commented 2 months ago

hi @dherault! could you or one of the maintainers have a look at this PR? thank you!

DorianMazur commented 2 months ago

Thank you for the PR @cnuss! I'll have a look in the next coming days.

1509 is possibly related to this PR.

cnuss commented 2 months ago

thanks @DorianMazur I'll look at adding this to ApiGV1 in the meantime. I selfishly didn't do it cause I don't use V1 🤣

cnuss commented 2 months ago

hi @DorianMazur I've added a fix for 1.0 payloads as well. please take a look when you're free! i'm eager to get this released

DorianMazur commented 2 months ago

Rerun tests

cnuss commented 2 months ago

hi @DorianMazur! is everything ok here?

cnuss commented 2 months ago

hi @DorianMazur did you want more tests added to confirm everything is ok?

DorianMazur commented 2 months ago

Looks good!

cnuss commented 2 months ago

thank you @DorianMazur!! what's the ETA for a tagged version including this?

cnuss commented 2 months ago

Closing the loop, this was released in https://github.com/dherault/serverless-offline/releases/tag/v13.5.0

thanks @DorianMazur !