AWS Batch based automation for OpenDroneMap.

Overview

DroneYard - OpenDroneMap Serverless Automation

DroneYard makes running OpenDroneMap automatically as simple as uploading your images and downloading the results. DroneYard is a set of automated tooling built on top of AWS Batch that monitors an S3 bucket for changes, and when it detects the presence of a trigger file, it will launch a batch job to process your images.

It is borrows inspiration and some code from https://github.com/hobuinc/codm, but makes different choices about dependencies. In particular, everything is handled by the CDK so it can be built and deployed with one single command.

The goal is to make setup and deployment as simple as possible, and rely only on AWS, Docker, and NPM.

Usage

Prerequisites

DroneYard depends on AWS, NPM, and Docker.

Configuration

Set your region in sst.json the default is us-west-2.

The stack can be configured in awsconfig.json, which is where you'll set instance types, whether to use a GPU, and the target memory/CPU requirements.

Deployment

npm install
npm run deploy -- --stage Prod

Everything is handled by the CDK. It will deploy an S3 bucket, a Lambda function, and an AWS Batch environment (using the default VPC.) SST/CDK will handle the entire deployment including building the docker container, uploading it to ECR, setting up all the permissions, and preparing all the services.

You can use any stage name (Prod is used by convention, but any is fine.)

Usage

After deploying, it will output a bucket name to the console, eg:

BucketName: dev-drone-yard-droneyard-dronephotosbucket1234567-1234567890

Create a folder in that bucket and upload all your photos into the bucket. s3 sync is useful for this, but any client will work.

Once all your images are uploaded, upload an empty file named dispatch to the folder.

This will start the workflow. When the image processing is complete, a folder called output will be alongside your photos.

Removal

npm run remove -- --stage Prod

Note, I don't believe this will remove your S3 bucket if you have uploaded files to it! To avoid charges for S3 you'll want to manually remove anything you uploaded.

Dev (Local Development)

Because DroneYard is built on SST, you can start a local development server using:

npm run start

This will deploy two stacks -- one stack to manage forwarding Lambda function invocations to your local workstation and one copy of the DroneYard stack. It will also launch a localhost URL that provides a simplified UI for S3, Lambda, etc.

Current Status

In active use to develop maps of forested land.

Coming Soon

DroneYard supports uploading a settings.yml file into your S3 bucket, but doesn't provide a default one, and doesn't provide any tools to manage it.

Adding support for notifications and canceling jobs is also an opportunity for future development.

You might also like...

A simple Prometheus (aggregated) push gateway allowing stateless/serverless workloads, ephemeral and batch jobs to easily expose their metrics.

A simple Prometheus (aggregated) push gateway allowing stateless/serverless workloads, ephemeral and batch jobs to easily expose their metrics.

Serverless Prometheus (aggregated) Push Gateway A simple Prometheus (aggregated) push gateway allowing stateless/serverless workloads, ephemeral and b

Dec 4, 2022

Perform queries on the current graph and batch process on the results.

Perform queries on the current graph and batch process on the results.

logseq-plugin-batch-op 对当前库进行查询并对查询结果进行批量操作。 Perform queries on the current graph and batch process on the results. 使用展示 (Usage) 批量删除 (Batch Delete) 批

Dec 1, 2022

Reduce image size of 1000s of photos as a batch.

downsizer A tiny tool to reduce size of images in bulk. Helps you to bulk reduce size of images in a folder or individual images. Install Install Node

Sep 15, 2022

🥁 Batch contract/on-chain queries to the same block. Multicall SDK for the Klaytn blockchain.

🥁 Batch contract/on-chain queries to the same block. Multicall SDK for the Klaytn blockchain.

Klaytn Multicall Built for inevitable-changes/bento Inspired by makerdao/multicall and dopex-io/web3-multicall 📦 Installation # Yarn yarn install kla

Nov 7, 2022

A serverless AWS expense tracker API. AWS Lambda functions, API gateway, and Dynamodb are among the ingredients.

AWS-Serverless-API A serverless AWS expense tracker API. AWS Lambda functions API gateway Dynamodb Endpoints Create a new expense: Method: POST Body f

Jul 16, 2022

Everynode allows you to run any version of Node.js in AWS Lambda, in any commercial AWS region

Everynode allows you to run any version of Node.js in AWS Lambda, in any commercial AWS region

Run Any Node.js Version in AWS Lambda Everynode allows you to run any version of Node.js in AWS Lambda, in any commercial AWS region. We add support f

Dec 15, 2022

Deploy an Architect project from GitHub Actions with keys gathered from aws-actions/configure-aws-credentials

Deploy an Architect project from GitHub Actions with keys gathered from a specific AWS IAM Role federated by an IAM OIDCProvider. CloudFormation to cr

Apr 6, 2022

A monorepo that uses the AWS Cloud Development Kit to deploy and configure nanomdm on AWS lambda.

NanoMDM on AWS This repo builds and configures a nanomdm server to run on AWS lambda. It uses the Cloud Development Kit and tries to follow best pract

May 26, 2022

a stack-separated way to bringing together common AWS services useful in a fullstack application that uses AWS Amplify libraries

Fullstack CDK Helpers This project helps developers create common AWS services that are useful in creating fullstack applications. Backend services ar

Nov 26, 2022
Comments
  • batch job failed:

    batch job failed: "exec /entry.sh: no such file or directory"

    Apologies in advance if I'm missing something obvious, I'm new to AWS.

    I'm deploying as per the instructions: npm install in the cloned repository (after changing region in sst.json and instance type in awsconfig.json) npm run deploy -- --stage Prod

    It deploys and gives me the bucket name, I upload my image and upload an empty file named "dispatch". Then the batch job changes status to runnable, but then after a few minutes changes status to failed. The log says "exec /entry.sh: no such file or directory".

    I thought it might be to do with my windows 10 machine saving the entry.sh files with windows line endings instead of unix line endings so saved them as unix, but I still get the issue.

    I haven't changed any of the code apart from sst.json and awsconfig.json as above. Do you have any idea why this is or am I missing an important step?

    opened by Dan-Carruthers 6
Owner
Phill Spiess
Phill Spiess
Under the Sea is an official AWS workshop delivered by AWS SAs and AWS Partners to help customers and partners to learn about AIOps with serverless architectures on AWS.

Under the Sea - AIOps with Serverless Workshop Under the Sea is an exciting MMORPG developed by the famous entrepreneur behind Wild Rydes, the most po

AWS Samples 4 Nov 16, 2022
Learn Web 2.0 and Web 3.0 Development using Next.js, Typescript, AWS CDK, AWS Serverless, Ethereum and AWS Aurora Serverless

Learn Web 2.0 Cloud and Web 3.0 Development in Baby Steps In this course repo we will learn Web 2.0 cloud development using the latest state of the ar

Panacloud Multi-Cloud Internet-Scale Modern Global Apps 89 Jan 3, 2023
MerLoc is a live AWS Lambda function development and debugging tool. MerLoc allows you to run AWS Lambda functions on your local while they are still part of a flow in the AWS cloud remote.

MerLoc MerLoc is a live AWS Lambda function development and debugging tool. MerLoc allows you to run AWS Lambda functions on your local while they are

Thundra 165 Dec 21, 2022
AWS Lambda & Serverless - Developer Guide with Hands-on Labs. Develop thousands line of aws lambda functions interact to aws serverless services with real-world hands-on labs

AWS Lambda & Serverless - Developer Guide with Hands-on Labs UDEMY COURSE WITH DISCOUNTED - Step by Step Development of this Repository -> https://www

awsrun 35 Dec 17, 2022
Grupprojekt för kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet för kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide För information om hur utv

Svante Jonsson IT-Högskolan 3 May 18, 2022
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
A new generation GUI automation framework for Web and Desktop Application Testing and Automation.

Clicknium-docs Clicknium is a new generation GUI automation framework for all types of applications. It provides easy and smooth developer experience

null 109 Dec 19, 2022
This project demonstrates single transaction and batch transaction use case

Batch Transaction Fullstack ( Localhost:8545 ) This project demonstrates single transaction and batch transaction use case. It comes with a transactio

Lemonde Shazai  39 Dec 27, 2022