SamGIS
todo
- export output to mask: OK local, OK aws lambda
- resolve model paths: OK local
- inference:
- from mask to json (rasterio + geopandas, check for re-projection to EPSG_4326)
- check mandatory dependencies
- check for alternative python interpreters
Build instructions
Build the docker image:
# clean any old active containers
docker stop $(docker ps -a -q); docker rm $(docker ps -a -q)
# build the base docker image with the docker aws repository tag
docker build . -f dockerfiles/dockerfile-lambda-gdal-runner --tag 686901913580.dkr.ecr.eu-west-1.amazonaws.com/lambda-gdal-runner
# OPTIONAL: to build the lambda-gdal-runner image on a x86 machine use the build arg `RIE="https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/latest/download/aws-lambda-rie"`:
docker build . -f dockerfiles/dockerfile-lambda-gdal-runner --build-arg RIE="https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/latest/download/aws-lambda-rie" --tag 686901913580.dkr.ecr.eu-west-1.amazonaws.com/lambda-gdal-runner --progress=plain
# build the final docker image
docker build . -f dockerfiles/dockerfile-lambda-fastsam-api --tag 686901913580.dkr.ecr.eu-west-1.amazonaws.com/lambda-fastsam-api
Run the container (keep it on background) and show logs
docker tag 686901913580.dkr.ecr.eu-west-1.amazonaws.com/lambda-fastsam-api:latest lambda-fastsam-api;docker run -d --name lambda-fastsam-api -p 8080:8080 lambda-fastsam-api; docker logs -f lambda-fastsam-api
Test it with curl:
URL=http://localhost:8080/2015-03-31/functions/function/invocations
curl -X 'POST' \
${URL} \
-H 'accept: application/json' \
-d '{}'
Publish the aws lambda
- Login on aws ECR with the correct aws profile (details on ECR page)
aws --profile alessandrotrinca_hotmail_aws_console_ec2_lambda ecr get-login-password --region eu-west-1 | docker login --username AWS --password-stdin 686901913580.dkr.ecr.eu-west-1.amazonaws.com
- Build and tag the docker images, then push them:
docker push 686901913580.dkr.ecr.eu-west-1.amazonaws.com/lambda-gdal-runner:latest docker push 686901913580.dkr.ecr.eu-west-1.amazonaws.com/lambda-fastsam-api:latest
- It's possible to publish a new aws lambda version from cmd or from lambda page
Dependencies installation and local tests
The docker build process needs only the classic requirements.txt, instead for local development and sphinx-docs build
there is Pipfile
(sphinx docs is hosted on Cloudflare Pages).
Tests
Tests are defined in the tests
folder in this project. Use PIP to install the test dependencies and run tests.
python -m pytest --cov=src --cov-report=term-missing && coverage html
Update the static documentation with sphinx
Run the sphinx-apidoc: it's a tool for automatic generation of Sphinx sources that, using the autodoc extension, document a whole package in the style of other automatic API documentation tools. See the documentation page for details. Run the command from the project root:
# missing docs folder (run from project root)
cd docs && sphinx-quickstart -p SamGIS -a "alessandro trinca tornidor" -r 1.0.0 -l python --master index
# update docs folder (from project root)
sphinx-apidoc -f -o docs src
Then it's possible to generate the HTML pages
cd docs && make html && ../
# to clean old files
cd docs && make clean html && cd ../
The static documentation it's now ready at the path docs/_build/html/index.html
.