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)