def handler()

in functions/source/CreateEnvironment/index.py [0:0]


def handler(event, context):
    timer = threading.Timer((context.get_remaining_time_in_millis() / 1000.00) - 0.5, timeout, args=[event, context])
    timer.start()
    try:
        # Extract the Job ID
        job_id = event['CodePipeline.job']['id']
        # Extract the Job Data
        job_data = event['CodePipeline.job']['data']
        user_parameters = job_data['actionConfiguration']['configuration']['UserParameters']
        print(job_data)
        print(event)
        BlueEnvInfo=GetBlueEnvInfo(EnvName=(json.loads(user_parameters)['BlueEnvName']))
        BlueEnvId=(BlueEnvInfo['Environments'][0]['EnvironmentId'])
        BlueVersionLabel=(BlueEnvInfo['Environments'][0]['VersionLabel'])
        
        #Calling CreateConfigTemplate API
        ConfigTemplate=CreateConfigTemplateBlue(AppName=(json.loads(user_parameters)['BeanstalkAppName']),BlueEnvId=BlueEnvId,TempName=json.loads(user_parameters)['CreateConfigTempName'])
        ReturnedTempName=ConfigTemplate
        print (ReturnedTempName)
        if not ReturnedTempName:
          #raise Exception if the Config file does not exist
          raise Exception("There were some issue while creating a Configuration Template from the Blue Environment")
        else:
          GreenEnvId=CreateGreenEnvironment(EnvName=(json.loads(user_parameters)['GreenEnvName']),ConfigTemplate=ReturnedTempName,AppVersion=BlueVersionLabel,AppName=(json.loads(user_parameters)['BeanstalkAppName']))
          print (GreenEnvId)
          #print (GreenEnvIddetails)
          if GreenEnvId:
              Status="Success"
              Message="Successfully created the Green Environment/Environment with the provided name already exists"
              #Create a CNAME Config file
              BlueEnvCname=(BlueEnvInfo['Environments'][0]['CNAME'])
              s3 = boto3.resource('s3')
              bucket = s3.Bucket(json.loads(user_parameters)['BlueCNAMEConfigBucket'])
              key = json.loads(user_parameters)['BlueCNAMEConfigFile']
              objs = list(bucket.objects.filter(Prefix=key))
              if len(objs) > 0 and objs[0].key == key:
                  print("BlueCNAMEConfigFile Already Exists!")
              else:
                  obj = s3.Object(json.loads(user_parameters)['BlueCNAMEConfigBucket'], json.loads(user_parameters)['BlueCNAMEConfigFile'])
                  BlueEnvCnameFile = {'BlueEnvUrl': BlueEnvCname}
                  obj.put(Body=json.dumps(BlueEnvCnameFile))
                  print ("Created a new CNAME file")
          else:
              Status="Failure"
              Message="Something went wrong on GreenEnv Creation"
    except Exception as e:
        print('Function failed due to exception.')
        e = sys.exc_info()[0]
        print(e)
        traceback.print_exc()
        Status="Failure"
        Message=("Error occured while executing this. The error is %s" %e)
    finally:
        timer.cancel()
        if (Status =="Success"):
            put_job_success(job_id, Message)
        else:
            put_job_failure(job_id, Message)