diff --git a/ham_ingestion.tf b/ham_ingestion.tf index dc7c921..7098270 100644 --- a/ham_ingestion.tf +++ b/ham_ingestion.tf @@ -233,6 +233,15 @@ resource "aws_lambda_function" "ham_sns_to_mqtt" { Name = "sns-to-mqtt" } + vpc_config { + security_group_ids = [ + "sg-05f795128b295c504", + ] + subnet_ids = [ + aws_subnet.private["us-east-1b"].id + ] + } + } resource "aws_lambda_permission" "ham_sns_to_mqtt" { diff --git a/lambda/sonde_api_to_iot_core/__init__.py b/lambda/sonde_api_to_iot_core/__init__.py index 73147a0..2bd6a03 100644 --- a/lambda/sonde_api_to_iot_core/__init__.py +++ b/lambda/sonde_api_to_iot_core/__init__.py @@ -230,12 +230,22 @@ def telemetry_filter(telemetry): _id_msg += " Note: MRZ sondes may take a while to get an ID." return (False, _id_msg) - + # https://github.com/projecthorus/sondehub-infra/issues/56 + if "iMet-4" == telemetry["type"] or "iMet-1" == telemetry["type"]: + if telemetry["software_name"] == "radiosonde_auto_rx": + if parse_autorx_version(telemetry["software_version"]) < (1,5,9): + return (False,f"Autorx version is out of date and doesn't handle iMet-1 and iMet-4 radiosondes correctly. Please update to 1.5.9 or later") if "dev" in telemetry: return (False, "All checks passed however payload contained dev flag so will not be uploaded to the database") return (True, "") +def parse_autorx_version(version): + try: + m = re.search(r'(\d+)\.(\d+)(?:\.(\d+))?', version) + return tuple([int(x if x != None else 0) for x in m.groups()]) + except: + return (0,0,0) def set_connection_header(request, operation_name, **kwargs): request.headers['Connection'] = 'keep-alive' diff --git a/lambda/sonde_api_to_iot_core/__main__.py b/lambda/sonde_api_to_iot_core/__main__.py index 5c01b8b..e24f799 100644 --- a/lambda/sonde_api_to_iot_core/__main__.py +++ b/lambda/sonde_api_to_iot_core/__main__.py @@ -36,7 +36,7 @@ payload = { "time": "31/Jan/2021:00:10:25 +0000", "timeEpoch": 1612051825409, }, - "body": "H4sIAHJJCGIAA31TTW/UMBC991esct4Yf8abvSEQcOCAaIVQqyqa3cxuLSVOsJ2lBfHfiV1VOBAxhxzmzXt5fmPfXW3m+pm+sQo/nMJ3cNhY6LHYbwoHrRn8YFtsYApD4x6L7cr4BZ03g40MRhSp86Fp7AZo0TVH6Dpvzmnq7Uf29cPq1Dh4E5617goliK54sS0YJVKzYkvv1zhgA1oLUVi92m3ef8qVg+mxcXhEc8E2jnDKeUl5yfgNF3ul9lISVquKqduc10LAyF2hVHtKCU21oPRgpxMcw+TQRdoXMB46WLh5GpPi52vJFlGiM9BF5IZxSetaLtDpkBPL6+URT+55XUprnbU7CLEpScV2Ku+ndBkjXIidyADoIoELziTRmtIqN479OIOlZoRm7YepN60JTzMkSK41OvR+DiIK1kTlvi7YNZdEUEJL8RfyMCNy1uKi2uU/wvkq2nM0ThWhWuqc6CH4BGW9A4R0HKIWUeG3Ce0xGpZ0iR0m50MTdx63VyklctRbl8IhLE/lsfmf4jSvtYQz2mikeN3Dj8Fu3nTD1L5zw9zM8/pz74uXlb2s6N+Hklw2LXYh3vqSkbqqV19G2qicA0vgr6v730ccp830AwAA", + "body": "H4sIAHrSGmIAA31TTY/TMBS876+ocm6MP+OmtxUIOIDEYYUQq1X02rx2LSVO8UfZBfHfib1a4UBZH3J482YymXFur1bz+Zmf6VR+OoTv4LCzMGK1XVUOejP5yfbYQQxT5x6q9YX1MzpvJpsYjCjSlkvxNEzQo+v2MAzeHPPWmw/sy/uLW6fJm/CkdVspQXTDq3XFKJGaVWt6d4kDNqC1kITVq83q3adSOZgRO4d7NGfs0wqnnNeU11zfcLFVaislYa1qmPpa8noImLgXKM2WUkLzWVBGsPEA+xAdukT7DMbDAAs3j6esaD5iqOUiTHQGhoTdMC5p2y7RuPs/9eCe6lJa62I8QEhDSRq2UeU8p8sY4UJsRAHAkAhccCaJ1pQ2pXEcTzNYa0ZoMb6Po+lNeJwhQUqtk0Pv5yCSYEtU6euMQ3fOBCW0FH8h9zMiZy0umk35Ipyvoj0m41QRqqUuiR6Cz1Ax20HIn0PUIir8FtHuk2FJl9guOh+61Hlqr1FKlKi3LodDWJnKQ/eSYpxLreGINhmprkf4MdnV62GK/Vs3zcMyrz/3vnqu7Lmif3+U7LLrcQjp1teMtE178c/IjUq16KzHlH5wEfPs19Xdb9jcd4QJBAAA", "isBase64Encoded": True, } print(lambda_handler(payload, {}))