GithubHelp home page GithubHelp logo

viaacode / s3-events-handler Goto Github PK

View Code? Open in Web Editor NEW
0.0 9.0 1.0 188 KB

Listens to S3 Events, pushes sidecar to TRA and requests an essence file transfer.

Python 98.56% Dockerfile 1.03% Makefile 0.42%
python chassis-py

s3-events-handler's Introduction

S3 Events Handler

S3 events handler for use in VRT v2 flow.

Synopsis

The S3 events handler is a service that handles incoming s3 events of type ObjectCreated and ObjectRemoved.

Object Created

This will generate a sidecar for an incoming essence. The generated XML gets put onto the MediaHaven transport server and a message gets published so that the essence gets moved to the transport server.

The object-created flow:

  • Parse incoming S3 message
  • Check if item is not already in MediaHaven
  • Get PID from the PID webservice
  • Generate MediaHaven sidecar XML
  • FTP sidecar to MediaHaven transport server
  • Publish message to move the file from S3 to the transport server

Object Removed

This will remove the essence and all of its collaterals in MediaHaven.

The object-removed flow:

  • Query the essence from MediaHaven with the s3_object_key and s3_bucket
  • Collect all the local_ids of the fragments of the returned essence
  • Query the collaterals from MediaHaven based on those local_ids
  • Remove the collaterals
  • Remove the essence

Prerequisites

  • Git
  • Docker (optional)
  • Python 3.6+
  • Access to the meemoo PyPi

Usage

  1. Clone this repository with:

    $ git clone https://github.com/viaacode/s3-events-handler.git

  2. Change into the new directory.

  3. Set the needed config:

    Included in this repository is a config.yml file detailing the required configuration. There is also an .env.example file containing all the needed env variables used in the config.yml file. All values in the config have to be set in order for the application to function correctly. You can use !ENV ${EXAMPLE} as a config value to make the application get the EXAMPLE environment variable.

Running locally

Note: As per the aforementioned requirements, this is a Python3 application. Check your Python version with python --version. You may want to substitute the python command below with python3 if your default Python version is < 3. In that case, you probably also want to use pip3 command.

  1. Start by creating a virtual environment:

    $ python -m venv env

  2. Activate the virtual environment:

    $ source env/bin/activate

  3. Install the external modules:

    $ pip install -r requirements.txt \
        --extra-index-url http://do-prd-mvn-01.do.viaa.be:8081/repository/pypi-all/simple \
        --trusted-host do-prd-mvn-01.do.viaa.be
    
  4. Run the tests with:

    $ pytest -v --cov=./meemoo --cov=main

  5. Run the application:

    $ python main.py

Running using Docker

  1. Build the container:

    $ docker build -t s3-events-handler .

  2. Run the container (with specified .env file):

    $ docker run --env-file .env --rm s3-events-handler:latest

s3-events-handler's People

Contributors

lennertvandevelde avatar maartends avatar rudolfdg avatar spacid avatar wardmaes avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

spacid

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.