in src/update_tags.py [0:0]
def lambda_handler(event, context):
logger.debug(f'Lambda event:{event}')
account = get_account_by_id(company_name=event['CompanyName'], account_id=event['AccountId'])[0]
# Note: We don't want to generate tags for account that need to be suspended.
if account['AccountStatus'] > Constant.AccountStatus.UPDATED:
return event
s3_client = boto3.client('s3')
file_name = f"tag-{event['CompanyName']}.json"
while True:
object_tag = ""
data = {}
obj = get_data(s3_client, Constant.SHARED_RESOURCE_BUCKET, file_name)
if obj.get('ETag'):
object_tag = obj.get('ETag')
data = obj['Body'].read()
updated_date = update_tags(data, account)
if object_tag == get_etag(s3_client, Constant.SHARED_RESOURCE_BUCKET, file_name):
s3_client.put_object(Body=bytes(json.dumps(updated_date), 'utf-8'),
Bucket=Constant.SHARED_RESOURCE_BUCKET,
Key=file_name)
break
sleep(2)
return {"Status": Constant.StateMachineStates.COMPLETED, "CompanyName": event['CompanyName']}