Hi Tanmay,
Thank you for the information this helps me alot. At the moment I'm recreating exactly what you have done following the lab you shared with me. One thing that popped out at me is the main screenshot of your lambda. Yours is different from the one I created. On yours you have the Amazon FreeRtos (which does not contain the correct permissions you need), it should be the Amazon CloudWatch Logs.
So I recommend creating the lambda function again following these instructions and the screenshots I have provided:
From Services > Compute > Lambda:
1. Create a new function:

2. Click Author from scratch, type in the name of your lambda function and choose python 3.6

3. Open the choose or create an execution role and make sure the execution role is the one shown below and at the bottom of the screen it shows that your lambda function with permissions to upload logs to Amazon Cloud watch Logs.

Once you have created your lambda. Click on the “Amazon CloudWatch Logs” icon and scroll down to the “Amazon CloudWatch Logs” section. Click on the “Manage these permissions” link. This will take us to the IAM console, where we can assign the permissions to our NXPLambdaFunction role.
Click on “Attach policies” button.

Type “awsiotfull” in the filter.
Select the “AWSIoTFullAccess” policy.
Click on the “Attach policy” button.

Verify that your role has now two policies: the AWSLambdaBasicExecutionRole and the AWSIoTFullAccess policies.

Go back to your NXPLambdaFunction and verify that you now has “AWS IoT” resource available for your Lambda function.

Scroll down and locate the editable function code window and erase the preconfigured code.
Copy-paste the content of lambda script code into code window.
Lastly configure the timeout to be 10 sec

Make sure you copy correctly the new ARN of your Lambda Function to your skill.
Let me know the results of these changes,
Sabina