npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

omnivore

v0.0.2

Published

Sample code for using Transloadit to encode any file added to an S3 bucket (using Lambda)

Downloads

18

Readme

omnivore

Sample code for using Transloadit to encode any file added to an S3 bucket (using Lambda)

Warning the code in this repo should be thought of more as an inspiration than a ready-to-rock batte-tested spaceship. Use it accordingly, and at own risk!!

The meat to setup all the plumbing is in ./main.sh. This is written in Bash so we can easily turn this into a tutorial, people can pick just the commands they're interested in, and that it will likely be easy to pickup for users coming from all different backend languages.

The actual function that's fired for every S3 upload is in ./omnivore.js. This is written in Node.js since that was the primary Lambda function as it's a language/platform the Transloadit team is most comfortable with. It could easily be adapted to use a different language and Transloadit SDK, but likely: You're never touching this function, if you have different encoding requirements, you would change the Template in your Transloadit account. So basically, you set this up once, make sure it works, and don't look back.

Prerequisites

# developed using versions: [email protected] [email protected] [email protected]_2
brew install awslogs awscli jq

The aws commands shown in main.sh assume that admin permissions to create/configure: Lambda functions, roles, S3 buckets are set up already via environment variables or ~/.aws/credentials/.

Install

git clone [email protected]:transloadit/omnivore.git
cd omnivore
yarn || npm i

Add the following information to env.sh:

TRANSLOADIT_KEY=x         # Transloadit user account id
TRANSLOADIT_SECRET=x      # Transloadit user account secret
TRANSLOADIT_TEMPLATE_ID=x # Transloadit template to run on the S3 files
OMNIVORE_SRCBUCKET=x      # the bucket name to monitor for newly added files

If you forget to do this, you'll be asked when running the setup.

Deploy Lambda function, role, S3 bucket, notification config

  • npm run setup to idempotently (create if not exists, update if exists) create the required Lambda function, role, S3 bucket, notification config. The Lambda function itself takes the S3 bucket name from the notification payload, but to setup the permissions, etc we need to know the source bucket at setup too.
  • Note: a destination bucket isn't needed, this is defined in the Transloadit Template (can be changed in ./env.sh, and then redeployed via npm run setup)

Test

Monitor

  • npm run logs:audit to check for any permission issues that the Lambda function may have encountered
  • npm run logs:tail to monitor logs of the invoked function (best open in this in a new tab, while running uploads or:)

Troubleshooting

The specified log group does not exist

If you run into this while doing npm run logs:tail, it's possible Omnivore didn't run yet and hence did not create any log (groups/streams). Try doing a setup first, and then an upload.

Sources