sam generate-event - How to set isBase64 to false?

0

Hope you are doing well!

I have been learning a bit on AWS and trying to test lambda locally. Currently I am trying to test the lambda by generating an event as if it comes from the API gateway.

I am using the following command after building my lambda application.

sam local generate-event apigateway aws-proxy --path retrievestatus --**body {"email":"abc@gmail.com"} **| sam local invoke -e - App

The event gets generated and the lambda is invoked. However I have a small issue here. The event generated has the following -

{ "body": "e2VtYWlsOmJ1bHVzdXNhc2hhbmtAZ21haWwuY29tfQ==", "resource": "/{proxy+}", "path": "/retrievestatus", "httpMethod": "POST", "isBase64Encoded": true,

My lambda is not really expecting a base64 encoded string. So I am looking for any suggestions to turn isBase64Encoded to false when I use SAM locally.

I have tried to check the options supported by running - "sam local generate-event apigateway aws-proxy -h" and couldn't find anything to turn it off.

Appreciate any help here.

已提问 2 年前737 查看次数
1 回答
1
已接受的回答

Based on the code in github, the event is always generated with base64 encoding. What I would suggest is to create the event once and modify it manually. Then use the saved event when you invoke the function using the -e parameter in sam local invoke.

profile pictureAWS
专家
Uri
已回答 2 年前
  • Thank you for confirmation!

    I have done it as per your suggestion and it works as expected.

    I have generated a local event and stored it in a file sam local generate-event apigateway aws-proxy --path retrievestatus --body {"email":"abc@gmail.com"} > test.json

    Made modifications in test.json to set the isbase64 flag to false and body as per my requirement.

    Then I used sam local invoke to accept the saved event sam local invoke -e test.json

    Thanks again and have a great day!

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则