diff --git a/lambda/.gitignore b/lambda/.gitignore index c4c4ffc..539f15b 100644 --- a/lambda/.gitignore +++ b/lambda/.gitignore @@ -1 +1,2 @@ *.zip +tmp/* diff --git a/lambda/README.md b/lambda/README.md index 7838a98..f2991bd 100644 --- a/lambda/README.md +++ b/lambda/README.md @@ -8,6 +8,7 @@ 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 +5. Enable ACLs on the output bucket ```json { @@ -17,13 +18,16 @@ "Sid": "AllowGet", "Effect": "Allow", "Action": "s3:GetObject", - "Resource": "arn:aws:s3:::tippecanoe-lambda-input/*" + "Resource": "arn:aws:s3:::protomaps-tippecanoe-test/*" }, { "Sid": "AllowPut", "Effect": "Allow", - "Action": "s3:PutObject", - "Resource": "arn:aws:s3:::tippecanoe-lambda-output/*" + "Action": [ + "s3:PutObject", + "s3:PutObjectAcl" + ], + "Resource": "arn:aws:s3:::protomaps-tippecanoe-test-output/*" } ] } diff --git a/lambda/tippecanoe.py b/lambda/tippecanoe.py index 4fd3867..b76e8e5 100644 --- a/lambda/tippecanoe.py +++ b/lambda/tippecanoe.py @@ -3,9 +3,10 @@ import json import subprocess import sys import boto3 +from botocore import UNSIGNED +from botocore.config import Config + # if the input bucket is publicly readable -# from botocore import UNSIGNED -# from botocore.config import Config #s3 = boto3.client('s3',config=Config(signature_version=UNSIGNED)) def lambda_handler(event, context): @@ -36,7 +37,7 @@ def run_tippecanoe(executable, tmpdir, bucket_name, input_key): for line in p.stderr: try: j = json.loads(line) - s3.put_object(Body=json.dumps(j),Bucket=os.environ['OUTPUT_BUCKET'],Key=root + ".progress") + s3.put_object(Body=json.dumps(j),Bucket=os.environ['OUTPUT_BUCKET'],Key=root + ".progress",ACL="public-read",ContentType="application/json",ContentDisposition="inline") except json.decoder.JSONDecodeError: pass s3.upload_file(output_path,os.environ['OUTPUT_BUCKET'],root + ".mbtiles")