cloudprog-hw4/lambda-gen-s3-url.py
2023-04-30 18:43:13 +08:00

40 lines
850 B
Python

import os
import json
import boto3
from botocore.exceptions import ClientError
TOPIC = os.getenv("MQTT_TOPIC", "")
BUCKET = os.getenv("BUCKET", "")
s3 = boto3.client('s3')
iot_data = boto3.client('iot-data')
# trigger by MQTT topic events
def lambda_handler(event, _context):
filename = event['filename']
try:
url = s3.generate_presigned_put(BUCKET, filename)
print("Got presigned URL: %s", url)
except ClientError as e:
print(e)
print("Couldn't get a presigned URL")
raise e
try:
iot_publish({ "url": url })
except Exception as e:
print(e)
print(f"Error while publishing to MQTT topic {TOPIC}.")
raise e
return url
def iot_publish(payload):
iot_data.publish(
topic=TOPIC,
qos=1,
payload=json.dumps(payload)
)