import datetime import boto3 from jinja2 import Template def lambda_handler(event, context): locations_to_plot = event["locations_to_plot"] s3_bucket = event["s3_bucket"] s3_folder = event["s3_folder"] identity_pool_id = event["identity_pool_id"] map_name = event["map_name"] html_map_template = """
""" template = Template(html_map_template) markers = [] for location_to_plot in locations_to_plot: markers.append( """ var marker = new mapboxgl.Marker() .setLngLat({0}) .setPopup(new mapboxgl.Popup().setHTML("

{1}

")) .addTo(map); //marker.togglePopup(); // toggle popup open or closed """.format( location_to_plot["coordinates"], location_to_plot["label"] ), ) html_map = template.render( markers=markers, identity_pool_id=identity_pool_id, map_name=map_name ) # Generate map and upload to S3 filename_map = "map_{}.html".format(datetime.datetime.utcnow().isoformat()) client = boto3.client("s3") response = client.put_object( Bucket=s3_bucket, Body=html_map, Key=s3_folder + filename_map, ContentType='text/html' ) print(response) # Generate a presigned URL for the S3 object response = client.generate_presigned_url( "get_object", Params={"Bucket": s3_bucket, "Key": s3_folder + filename_map}, ExpiresIn=3600, ) # The response contains the presigned URL print(response) return {"link_map": response}