add lambda info

This commit is contained in:
Brandon Liu 2022-05-17 15:29:38 +08:00
parent d04bd09d11
commit 9875ae97a8
4 changed files with 33 additions and 0 deletions

1
lambda/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
*.zip

10
lambda/README.md Normal file
View File

@ -0,0 +1,10 @@
# Build the tippecanoe layer (binary)
1. On an AWS Linux 2 instance or image:
sudo yum update
sudo yum install git clang sqlite-devel zlib-devel
2. Create a ZIP archive with the `tippecanoe` binary at `bin/tippecanoe` and upload as a Lambda layer
3. Copy [lambda_function.py](lambda_function.py) (python 3.9 runtime)
4. set the environment variable `OUTPUT_BUCKET` to your output bucket; give lambda IAM role access to input/output buckets

20
lambda/lambda_function.py Normal file
View File

@ -0,0 +1,20 @@
import os
import json
import subprocess
import boto3
# if the input bucket is publicly readable
# from botocore import UNSIGNED
# from botocore.config import Config
def lambda_handler(event, context):
bucket = event['Records'][0]['s3']['bucket']['name']
key = event['Records'][0]['s3']['object']['key']
#s3 = boto3.client('s3',config=Config(signature_version=UNSIGNED))
s3 = boto3.client('s3')
s3.download_file(bucket,key,'/tmp/input.geojsonseq')
p = subprocess.check_call(['tippecanoe','-o','/tmp/output.mbtiles','/tmp/input.geojsonseq','--force'])
s3.upload_file('/tmp/output.mbtiles',os.environ['OUTPUT_BUCKET'],key + ".mbtiles")
return {
'statusCode': 200,
'body': json.dumps('Done!')
}

2
lambda/requirements.txt Normal file
View File

@ -0,0 +1,2 @@
boto3==1.20.32
botocore==1.23.32