Dynamic environment variables for AWS Lambda using cloudformation template

I achieved this with the PyPlate macro. Take environment variables list in a commalimited

Parameters:
  EnvVars:
    Type: CommaDelimitedList
    Description: Comma separated list of Env vars key=value pairs (key1=value1,key2=value2)

and use it in the Lambda Resource:

  Environment:
    Variables: |
      #!PyPlate
      output = dict()
      for envVar in params['EnvVars']:
        key, value = envVar.split('=')
        output.update({key: value})

So, I tried so many ways to achieve this, but we can not pass the dynamic key-value pair to nested lambda stack from the parent stack. I had a confirmation from the AWS support that this is not possible as this moment.

They suggested a another way which I liked and implemented and its mentioned as below:

Pass the key: value pair as a JSON string and parse it appropriately in the lambda function.

Environment:
  Variables:
    Env1: '{"REGION": "REGION_VALUE", "ENDPOINT": "http://SOME_ENDPOINT"}'  

This suggestion has a little overhead on programming to parse the JSON string, but at this moment I will recommend this as solution for above problem.