[feat] revert to aws lambda - wip
Browse files- .dockerignore +2 -1
 - Dockerfile +34 -26
 - dockerfiles/dockerfile-base-webserver +17 -15
 - dockerfiles/dockerfile-fastapi-samgeo +38 -0
 - dockerfiles/dockerfile-samgeo-api +31 -0
 - requirements.txt +0 -3
 - scripts/aws-lambda-rie +0 -0
 - scripts/copy_folder_to_host.sh +12 -0
 - scripts/lambda-entrypoint.sh +7 -0
 - src/__init__.py +0 -4
 - src/app.py +8 -0
 - src/utilities/utilities.py +5 -24
 
    	
        .dockerignore
    CHANGED
    
    | 
         @@ -3,4 +3,5 @@ venv/ 
     | 
|
| 3 | 
         
             
            __cache__
         
     | 
| 4 | 
         
             
            .idea
         
     | 
| 5 | 
         
             
            tmp/
         
     | 
| 6 | 
         
            -
            .env*
         
     | 
| 
         | 
| 
         | 
|
| 3 | 
         
             
            __cache__
         
     | 
| 4 | 
         
             
            .idea
         
     | 
| 5 | 
         
             
            tmp/
         
     | 
| 6 | 
         
            +
            .env*
         
     | 
| 7 | 
         
            +
            __pycache__
         
     | 
    	
        Dockerfile
    CHANGED
    
    | 
         @@ -1,38 +1,46 @@ 
     | 
|
| 1 | 
         
            -
             
     | 
| 
         | 
|
| 2 | 
         | 
| 3 | 
         
            -
             
     | 
| 4 | 
         
            -
            COPY ./requirements.txt /code/requirements.txt
         
     | 
| 5 | 
         
            -
            COPY ./requirements_pip.txt /code/requirements_pip.txt
         
     | 
| 6 | 
         | 
| 7 | 
         
            -
             
     | 
| 
         | 
|
| 
         | 
|
| 8 | 
         | 
| 9 | 
         
            -
             
     | 
| 10 | 
         
            -
             
     | 
| 11 | 
         
            -
             
     | 
| 
         | 
|
| 
         | 
|
| 12 | 
         | 
| 13 | 
         
            -
             
     | 
| 14 | 
         
            -
             
     | 
| 15 | 
         
            -
            RUN python -m pip install -- 
     | 
| 16 | 
         
            -
            RUN python -m pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu
         
     | 
| 17 | 
         
            -
             
     | 
| 
         | 
|
| 18 | 
         | 
| 19 | 
         
            -
             
     | 
| 20 | 
         | 
| 21 | 
         
            -
             
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 22 | 
         | 
| 23 | 
         
            -
             
     | 
| 24 | 
         
            -
             
     | 
| 25 | 
         | 
| 26 | 
         
            -
             
     | 
| 
         | 
|
| 27 | 
         | 
| 28 | 
         
            -
             
     | 
| 29 | 
         
            -
             
     | 
| 30 | 
         
            -
            COPY --chown=user . $HOME/app
         
     | 
| 31 | 
         | 
| 32 | 
         
            -
            RUN  
     | 
| 33 | 
         
            -
            RUN  
     | 
| 34 | 
         | 
| 35 | 
         
            -
             
     | 
| 36 | 
         
            -
            RUN  
     | 
| 
         | 
|
| 37 | 
         | 
| 38 | 
         
            -
             
     | 
| 
         | 
|
| 1 | 
         
            +
            # inspired by https://dev.to/gaborschulz/running-python-311-on-aws-lambda-1i7p
         
     | 
| 2 | 
         
            +
            FROM ghcr.io/osgeo/gdal:ubuntu-small-3.7.2 as build-image
         
     | 
| 3 | 
         | 
| 4 | 
         
            +
            LABEL maintainer="alessandro trinca <[email protected]>"
         
     | 
| 
         | 
|
| 
         | 
|
| 5 | 
         | 
| 6 | 
         
            +
            # Include global arg in this stage of the build
         
     | 
| 7 | 
         
            +
            ARG LAMBDA_TASK_ROOT="/var/task"
         
     | 
| 8 | 
         
            +
            ARG PYTHONPATH="${LAMBDA_TASK_ROOT}:${PYTHONPATH}:/usr/local/lib/python3/dist-packages"
         
     | 
| 9 | 
         | 
| 10 | 
         
            +
            RUN mkdir -p ${LAMBDA_TASK_ROOT}
         
     | 
| 11 | 
         
            +
             
     | 
| 12 | 
         
            +
            # Install aws-lambda-cpp build dependencies
         
     | 
| 13 | 
         
            +
            RUN apt update && \
         
     | 
| 14 | 
         
            +
              apt install -y g++ make cmake unzip libcurl4-openssl-dev python3-pip
         
     | 
| 15 | 
         | 
| 16 | 
         
            +
            # install required packages
         
     | 
| 17 | 
         
            +
            COPY requirements_pip.txt ${LAMBDA_TASK_ROOT}/
         
     | 
| 18 | 
         
            +
            RUN python -m pip install --target ${LAMBDA_TASK_ROOT} --upgrade -r ${LAMBDA_TASK_ROOT}/requirements_pip.txt
         
     | 
| 19 | 
         
            +
            RUN python -m pip install torch torchvision --target ${LAMBDA_TASK_ROOT} --index-url https://download.pytorch.org/whl/cpu
         
     | 
| 20 | 
         
            +
            COPY requirements.txt ${LAMBDA_TASK_ROOT}/
         
     | 
| 21 | 
         
            +
            RUN python -m pip install --target ${LAMBDA_TASK_ROOT} -r ${LAMBDA_TASK_ROOT}/requirements.txt
         
     | 
| 22 | 
         | 
| 23 | 
         
            +
            FROM osgeo/gdal:ubuntu-small-3.7.2
         
     | 
| 24 | 
         | 
| 25 | 
         
            +
            # Include global arg in this stage of the build
         
     | 
| 26 | 
         
            +
            ARG LAMBDA_TASK_ROOT="/var/task"
         
     | 
| 27 | 
         
            +
            ARG PYTHONPATH="${LAMBDA_TASK_ROOT}:${PYTHONPATH}:/usr/local/lib/python3/dist-packages"
         
     | 
| 28 | 
         
            +
            ARG RIE="https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/latest/download/aws-lambda-rie"
         
     | 
| 29 | 
         | 
| 30 | 
         
            +
            # Set working directory to function root directory
         
     | 
| 31 | 
         
            +
            WORKDIR ${LAMBDA_TASK_ROOT}
         
     | 
| 32 | 
         | 
| 33 | 
         
            +
            RUN apt update && apt install -y libgl1 curl
         
     | 
| 34 | 
         
            +
            RUN ls -ld /usr/lib/x86_64-linux-gnu/libGL.so* || echo "libGL.so* not found..."
         
     | 
| 35 | 
         | 
| 36 | 
         
            +
            # Copy in the built dependencies
         
     | 
| 37 | 
         
            +
            COPY --from=build-image ${LAMBDA_TASK_ROOT} ${LAMBDA_TASK_ROOT}
         
     | 
| 
         | 
|
| 38 | 
         | 
| 39 | 
         
            +
            RUN curl -Lo /usr/local/bin/aws-lambda-rie ${RIE}
         
     | 
| 40 | 
         
            +
            RUN chmod +x /usr/local/bin/aws-lambda-rie
         
     | 
| 41 | 
         | 
| 42 | 
         
            +
            COPY ./scripts/lambda-entrypoint.sh /lambda-entrypoint.sh
         
     | 
| 43 | 
         
            +
            RUN chmod +x /lambda-entrypoint.sh
         
     | 
| 44 | 
         
            +
            RUN ls -l /lambda-entrypoint.sh
         
     | 
| 45 | 
         | 
| 46 | 
         
            +
            ENTRYPOINT  ["/lambda-entrypoint.sh"]
         
     | 
    	
        dockerfiles/dockerfile-base-webserver
    CHANGED
    
    | 
         @@ -1,22 +1,24 @@ 
     | 
|
| 1 | 
         
            -
            FROM  
     | 
| 2 | 
         | 
| 3 | 
         
            -
             
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 4 | 
         | 
| 5 | 
         
            -
             
     | 
| 6 | 
         
            -
             
     | 
| 7 | 
         
            -
            RUN python -m pip install --no-cache-dir fastapi uvicorn loguru
         
     | 
| 8 | 
         | 
| 9 | 
         
            -
            RUN  
     | 
| 
         | 
|
| 10 | 
         | 
| 11 | 
         
            -
             
     | 
| 
         | 
|
| 
         | 
|
| 12 | 
         | 
| 13 | 
         
            -
             
     | 
| 14 | 
         
            -
            	PATH=/home/user/.local/bin:$PATH
         
     | 
| 15 | 
         | 
| 16 | 
         
            -
             
     | 
| 
         | 
|
| 17 | 
         | 
| 18 | 
         
            -
             
     | 
| 19 | 
         
            -
             
     | 
| 20 | 
         
            -
            COPY --chown=user static $HOME/app/static
         
     | 
| 21 | 
         
            -
             
     | 
| 22 | 
         
            -
            CMD ["uvicorn", "src.main:app", "--host", "0.0.0.0", "--port", "7860"]
         
     | 
| 
         | 
|
| 1 | 
         
            +
            FROM ghcr.io/osgeo/gdal:ubuntu-small-3.7.2
         
     | 
| 2 | 
         | 
| 3 | 
         
            +
            # Include global arg in this stage of the build
         
     | 
| 4 | 
         
            +
            ARG LAMBDA_TASK_ROOT="/var/task"
         
     | 
| 5 | 
         
            +
            ARG PYTHONPATH="${LAMBDA_TASK_ROOT}:${PYTHONPATH}:/usr/local/lib/python3/dist-packages"
         
     | 
| 6 | 
         
            +
            ARG RIE="https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/latest/download/aws-lambda-rie"
         
     | 
| 7 | 
         | 
| 8 | 
         
            +
            # Set working directory to function root directory
         
     | 
| 9 | 
         
            +
            WORKDIR ${LAMBDA_TASK_ROOT}
         
     | 
| 
         | 
|
| 10 | 
         | 
| 11 | 
         
            +
            RUN curl -Lo /usr/local/bin/aws-lambda-rie ${RIE}
         
     | 
| 12 | 
         
            +
            RUN chmod +x /usr/local/bin/aws-lambda-rie
         
     | 
| 13 | 
         | 
| 14 | 
         
            +
            COPY ./scripts/lambda-entrypoint.sh /lambda-entrypoint.sh
         
     | 
| 15 | 
         
            +
            RUN chmod +x /lambda-entrypoint.sh
         
     | 
| 16 | 
         
            +
            RUN ls -l /lambda-entrypoint.sh
         
     | 
| 17 | 
         | 
| 18 | 
         
            +
            COPY ./src ${LAMBDA_TASK_ROOT}/src
         
     | 
| 
         | 
|
| 19 | 
         | 
| 20 | 
         
            +
            RUN apt update && apt install -y python3-pip
         
     | 
| 21 | 
         
            +
            RUN python -m pip install awslambdaric
         
     | 
| 22 | 
         | 
| 23 | 
         
            +
            ENTRYPOINT  ["/lambda-entrypoint.sh"]
         
     | 
| 24 | 
         
            +
            CMD [ "src.app.lambda_handler" ]
         
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
    	
        dockerfiles/dockerfile-fastapi-samgeo
    ADDED
    
    | 
         @@ -0,0 +1,38 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            FROM ghcr.io/osgeo/gdal:ubuntu-small-3.7.2
         
     | 
| 2 | 
         
            +
             
     | 
| 3 | 
         
            +
            WORKDIR /code
         
     | 
| 4 | 
         
            +
            COPY ./requirements.txt /code/requirements.txt
         
     | 
| 5 | 
         
            +
            COPY ./requirements_pip.txt /code/requirements_pip.txt
         
     | 
| 6 | 
         
            +
             
     | 
| 7 | 
         
            +
            RUN apt update && apt install -y g++ make cmake unzip libcurl4-openssl-dev python3-pip
         
     | 
| 8 | 
         
            +
             
     | 
| 9 | 
         
            +
            # avoid segment-geospatial exception caused by missing libGL.so.1 library
         
     | 
| 10 | 
         
            +
            RUN apt install -y libgl1 curl
         
     | 
| 11 | 
         
            +
            RUN ls -ld /usr/lib/x86_64-linux-gnu/libGL.so* || echo "libGL.so* not found..."
         
     | 
| 12 | 
         
            +
             
     | 
| 13 | 
         
            +
            RUN which python
         
     | 
| 14 | 
         
            +
            RUN python --version
         
     | 
| 15 | 
         
            +
            RUN python -m pip install --no-cache-dir --upgrade -r /code/requirements_pip.txt
         
     | 
| 16 | 
         
            +
            RUN python -m pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu
         
     | 
| 17 | 
         
            +
            RUN python -m pip install --no-cache-dir -r /code/requirements.txt
         
     | 
| 18 | 
         
            +
             
     | 
| 19 | 
         
            +
            RUN useradd -m -u 1000 user
         
     | 
| 20 | 
         
            +
             
     | 
| 21 | 
         
            +
            USER user
         
     | 
| 22 | 
         
            +
             
     | 
| 23 | 
         
            +
            ENV HOME=/home/user \
         
     | 
| 24 | 
         
            +
            	PATH=/home/user/.local/bin:$PATH
         
     | 
| 25 | 
         
            +
             
     | 
| 26 | 
         
            +
            WORKDIR $HOME/app
         
     | 
| 27 | 
         
            +
             
     | 
| 28 | 
         
            +
            RUN curl -o ${HOME}/sam_vit_h_4b8939.pth https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth
         
     | 
| 29 | 
         
            +
            RUN ls -l ${HOME}/
         
     | 
| 30 | 
         
            +
            COPY --chown=user . $HOME/app
         
     | 
| 31 | 
         
            +
             
     | 
| 32 | 
         
            +
            RUN echo $HOME/app
         
     | 
| 33 | 
         
            +
            RUN echo $HOME/
         
     | 
| 34 | 
         
            +
             
     | 
| 35 | 
         
            +
            RUN ls -l $HOME/app
         
     | 
| 36 | 
         
            +
            RUN ls -l $HOME/
         
     | 
| 37 | 
         
            +
             
     | 
| 38 | 
         
            +
            CMD ["uvicorn", "src.main:app", "--host", "0.0.0.0", "--port", "7860"]
         
     | 
    	
        dockerfiles/dockerfile-samgeo-api
    ADDED
    
    | 
         @@ -0,0 +1,31 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            FROM 686901913580.dkr.ecr.eu-west-1.amazonaws.com/lambda-gdal-runner:latest
         
     | 
| 2 | 
         
            +
             
     | 
| 3 | 
         
            +
            ARG LAMBDA_TASK_ROOT="/var/task"
         
     | 
| 4 | 
         
            +
            ARG PYTHONPATH="${LAMBDA_TASK_ROOT}:${PYTHONPATH}:/usr/local/lib/python3/dist-packages"
         
     | 
| 5 | 
         
            +
             
     | 
| 6 | 
         
            +
            COPY ./src ${LAMBDA_TASK_ROOT}/src
         
     | 
| 7 | 
         
            +
             
     | 
| 8 | 
         
            +
            COPY .env ${LAMBDA_TASK_ROOT}
         
     | 
| 9 | 
         
            +
            RUN ls -l ${LAMBDA_TASK_ROOT}/.env
         
     | 
| 10 | 
         
            +
            RUN . ${LAMBDA_TASK_ROOT}/.env
         
     | 
| 11 | 
         
            +
             
     | 
| 12 | 
         
            +
            RUN ls -l /usr/bin/which
         
     | 
| 13 | 
         
            +
            RUN /usr/bin/which python
         
     | 
| 14 | 
         
            +
            RUN python -v
         
     | 
| 15 | 
         
            +
            RUN echo "PYTHONPATH: ${PYTHONPATH}."
         
     | 
| 16 | 
         
            +
            RUN echo "PATH: ${PATH}."
         
     | 
| 17 | 
         
            +
            RUN echo "LAMBDA_TASK_ROOT: ${LAMBDA_TASK_ROOT}."
         
     | 
| 18 | 
         
            +
            RUN ls -l ${LAMBDA_TASK_ROOT}
         
     | 
| 19 | 
         
            +
            RUN ls -ld ${LAMBDA_TASK_ROOT}
         
     | 
| 20 | 
         
            +
            RUN python -c "import sys; print(sys.path)"
         
     | 
| 21 | 
         
            +
            RUN python -c "import osgeo"
         
     | 
| 22 | 
         
            +
            RUN python -c "import rasterio"
         
     | 
| 23 | 
         
            +
            RUN python -c "import awslambdaric"
         
     | 
| 24 | 
         
            +
            RUN python -m pip list
         
     | 
| 25 | 
         
            +
            RUN python -m pip freeze
         
     | 
| 26 | 
         
            +
            RUN df -h
         
     | 
| 27 | 
         
            +
             
     | 
| 28 | 
         
            +
            RUN echo "$(date "+%Y%m%d_%H%M%S")" > ${LAMBDA_TASK_ROOT}/buildtime.txt
         
     | 
| 29 | 
         
            +
            RUN python -m pip freeze > ${LAMBDA_TASK_ROOT}/pythonpackages.txt
         
     | 
| 30 | 
         
            +
             
     | 
| 31 | 
         
            +
            CMD [ "src.surferdtm_prediction_api.app.lambda_handler" ]
         
     | 
    	
        requirements.txt
    CHANGED
    
    | 
         @@ -1,6 +1,3 @@ 
     | 
|
| 1 | 
         
            -
            fastapi
         
     | 
| 2 | 
         
             
            bson
         
     | 
| 3 | 
         
            -
            loguru
         
     | 
| 4 | 
         
             
            python-dotenv
         
     | 
| 5 | 
         
             
            segment-geospatial
         
     | 
| 6 | 
         
            -
            uvicorn[standard]
         
     | 
| 
         | 
|
| 
         | 
|
| 1 | 
         
             
            bson
         
     | 
| 
         | 
|
| 2 | 
         
             
            python-dotenv
         
     | 
| 3 | 
         
             
            segment-geospatial
         
     | 
| 
         | 
    	
        scripts/aws-lambda-rie
    ADDED
    
    | 
         
            File without changes
         
     | 
    	
        scripts/copy_folder_to_host.sh
    ADDED
    
    | 
         @@ -0,0 +1,12 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            #!/usr/bin/env bash
         
     | 
| 2 | 
         
            +
             
     | 
| 3 | 
         
            +
            echo "options:"
         
     | 
| 4 | 
         
            +
            echo "\$1: container folder we copy from"
         
     | 
| 5 | 
         
            +
            echo "\$2: container folder we copy to (could also be an host folder)"
         
     | 
| 6 | 
         
            +
             
     | 
| 7 | 
         
            +
            cp -r "$1" "$2"
         
     | 
| 8 | 
         
            +
            echo "copied folder $1 to folder $2!"
         
     | 
| 9 | 
         
            +
            ls -ld "$2"
         
     | 
| 10 | 
         
            +
            ls -l "$2"
         
     | 
| 11 | 
         
            +
             
     | 
| 12 | 
         
            +
            exit 0
         
     | 
    	
        scripts/lambda-entrypoint.sh
    ADDED
    
    | 
         @@ -0,0 +1,7 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            #!/bin/sh
         
     | 
| 2 | 
         
            +
             
     | 
| 3 | 
         
            +
            if [ -z "${AWS_LAMBDA_RUNTIME_API}" ]; then
         
     | 
| 4 | 
         
            +
              exec /usr/local/bin/aws-lambda-rie /usr/bin/python -m awslambdaric "$@"
         
     | 
| 5 | 
         
            +
            else
         
     | 
| 6 | 
         
            +
              exec /usr/bin/python -m awslambdaric "$@"
         
     | 
| 7 | 
         
            +
            fi
         
     | 
    	
        src/__init__.py
    CHANGED
    
    | 
         @@ -1,4 +0,0 @@ 
     | 
|
| 1 | 
         
            -
            from src.utilities.utilities import setup_logging
         
     | 
| 2 | 
         
            -
             
     | 
| 3 | 
         
            -
             
     | 
| 4 | 
         
            -
            app_logger = setup_logging(debug=True)
         
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
    	
        src/app.py
    ADDED
    
    | 
         @@ -0,0 +1,8 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            import json
         
     | 
| 2 | 
         
            +
            import logging
         
     | 
| 3 | 
         
            +
             
     | 
| 4 | 
         
            +
             
     | 
| 5 | 
         
            +
            def lambda_handler(event, context):
         
     | 
| 6 | 
         
            +
                logging.debug(f"event:{event}...")
         
     | 
| 7 | 
         
            +
                logging.debug(f"context:{context}...")
         
     | 
| 8 | 
         
            +
                return {"msg": f"ciao{json.dumps(event)}."}
         
     | 
    	
        src/utilities/utilities.py
    CHANGED
    
    | 
         @@ -26,14 +26,12 @@ def setup_logging(debug: bool = False, formatter: str = "{time} - {level} - ({ex 
     | 
|
| 26 | 
         
             
                return logger
         
     | 
| 27 | 
         | 
| 28 | 
         | 
| 29 | 
         
            -
            def get_constants(event: dict,  
     | 
| 30 | 
         
             
                """
         
     | 
| 31 | 
         
             
                Return constants we need to use from event, context and environment variables (both production and test).
         
     | 
| 32 | 
         
            -
             
     | 
| 33 | 
         
             
                Args:
         
     | 
| 34 | 
         
             
                    event: request event
         
     | 
| 35 | 
         
            -
                    root: path containing the dotenv file
         
     | 
| 36 | 
         
            -
                    dotenv_filename: dotenv filename
         
     | 
| 37 | 
         
             
                    debug: logging debug argument
         
     | 
| 38 | 
         | 
| 39 | 
         
             
                Returns:
         
     | 
| 
         @@ -41,10 +39,7 @@ def get_constants(event: dict, root: str = ROOT, dotenv_filename: str = ".env", 
     | 
|
| 41 | 
         | 
| 42 | 
         
             
                """
         
     | 
| 43 | 
         
             
                import json
         
     | 
| 44 | 
         
            -
                import os
         
     | 
| 45 | 
         
            -
                # from dotenv import dotenv_values
         
     | 
| 46 | 
         | 
| 47 | 
         
            -
                from src.utilities.constants import SKIP_CONDITIONS_LIST
         
     | 
| 48 | 
         
             
                local_logger = setup_logging(debug)
         
     | 
| 49 | 
         
             
                try:
         
     | 
| 50 | 
         
             
                    body = event["body"]
         
     | 
| 
         @@ -64,24 +59,10 @@ def get_constants(event: dict, root: str = ROOT, dotenv_filename: str = ".env", 
     | 
|
| 64 | 
         
             
                local_logger.debug(f"constants debug:{debug}, log_level:{local_logger.level}, body:{body}.")
         
     | 
| 65 | 
         | 
| 66 | 
         
             
                try:
         
     | 
| 67 | 
         
            -
                    dotenv_file_path = os.path.join(root, dotenv_filename)
         
     | 
| 68 | 
         
            -
                    local_logger.info(f"root_path:{root}, dotenv file:{dotenv_file_path}.")
         
     | 
| 69 | 
         
            -
                    # secrets = dotenv_values(dotenv_file_path)
         
     | 
| 70 | 
         
            -
             
     | 
| 71 | 
         
            -
                    try:
         
     | 
| 72 | 
         
            -
                        skip_conditions_list = body["skip_conditions_list"]
         
     | 
| 73 | 
         
            -
                        local_logger.info(f"found skip_conditions_list, using it: {skip_conditions_list}.")
         
     | 
| 74 | 
         
            -
                    except KeyError:
         
     | 
| 75 | 
         
            -
                        skip_conditions_list = SKIP_CONDITIONS_LIST
         
     | 
| 76 | 
         
            -
             
     | 
| 77 | 
         
             
                    return {
         
     | 
| 78 | 
         
            -
                        " 
     | 
| 79 | 
         
            -
                        " 
     | 
| 80 | 
         
            -
                        "debug": debug 
     | 
| 81 | 
         
            -
                        "slope_cellsize": body["slope_cellsize"],
         
     | 
| 82 | 
         
            -
                        "model_project_name": body["model_project_name"],
         
     | 
| 83 | 
         
            -
                        "model_version": body["model_version"],
         
     | 
| 84 | 
         
            -
                        "skip_conditions_list": skip_conditions_list
         
     | 
| 85 | 
         
             
                    }
         
     | 
| 86 | 
         
             
                except KeyError as e_key_constants2:
         
     | 
| 87 | 
         
             
                    local_logger.error(f"e_key_constants2:{e_key_constants2}.")
         
     | 
| 
         | 
|
| 26 | 
         
             
                return logger
         
     | 
| 27 | 
         | 
| 28 | 
         | 
| 29 | 
         
            +
            def get_constants(event: dict, debug=False) -> dict:
         
     | 
| 30 | 
         
             
                """
         
     | 
| 31 | 
         
             
                Return constants we need to use from event, context and environment variables (both production and test).
         
     | 
| 32 | 
         
            +
             
     | 
| 33 | 
         
             
                Args:
         
     | 
| 34 | 
         
             
                    event: request event
         
     | 
| 
         | 
|
| 
         | 
|
| 35 | 
         
             
                    debug: logging debug argument
         
     | 
| 36 | 
         | 
| 37 | 
         
             
                Returns:
         
     | 
| 
         | 
|
| 39 | 
         | 
| 40 | 
         
             
                """
         
     | 
| 41 | 
         
             
                import json
         
     | 
| 
         | 
|
| 
         | 
|
| 42 | 
         | 
| 
         | 
|
| 43 | 
         
             
                local_logger = setup_logging(debug)
         
     | 
| 44 | 
         
             
                try:
         
     | 
| 45 | 
         
             
                    body = event["body"]
         
     | 
| 
         | 
|
| 59 | 
         
             
                local_logger.debug(f"constants debug:{debug}, log_level:{local_logger.level}, body:{body}.")
         
     | 
| 60 | 
         | 
| 61 | 
         
             
                try:
         
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 62 | 
         
             
                    return {
         
     | 
| 63 | 
         
            +
                        "bbox": body["bbox"],
         
     | 
| 64 | 
         
            +
                        "point": body["point"],
         
     | 
| 65 | 
         
            +
                        "debug": debug
         
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 66 | 
         
             
                    }
         
     | 
| 67 | 
         
             
                except KeyError as e_key_constants2:
         
     | 
| 68 | 
         
             
                    local_logger.error(f"e_key_constants2:{e_key_constants2}.")
         
     |