This lambda currently listens to the AWS Bib/Item Kinesis Stream and sends POST requests to the MyLibraryNYC Rails application.
- Run
npm install
npm install -g node-lambda
cp example.env .env
cp deploy.example.env deploy-item.env
-
Fill in
.envwith amazon account information -
Fill in
deploy-*.envfiles with the following variables
| Variable | Value |
|---|---|
| NYPL_API_SCHEMA_URL | URL to item schema |
| NYPL_POST_TYPE | 'item' |
| NYPL_API_POST_URL | URL this will POST to |
| NYPL_OAUTH_URL | |
| NYPL_OAUTH_KEY | |
| NYPL_OAUTH_SECRET | . |
Generate mock-data by running
node kinesify-data.js event.unencoded.sierra_item_post_request.json event.json https://platform.nypl.org/api/v0.1/current-schemas/Item
This will take the un-encoded data in event.unencoded.sierra_item_post_request.json and put it in a kinesis stream format using the avro schema.
Assuming you have the proper API and oauth credentials setup in your .env, you can run the lambda locally using the mock data in event.json
node-lambda run --configFile config/deploy_development.env
This will take event.json (which is mocked-up kinesis stream data) as input, authenticate with oauth server, retrieve schema from Schema API, parse stream data, then post it to the bib or item API depending on config. event.json is the default file your lambda uses. If you want to specify your own kinesified
mock data file, try node-lambda run --configFile config/deploy_development.env --eventFile event.json.
If you get a problem with node not finding one of the packages (can happen when incrementing the node version), run node-lambda setup.
We follow a feature-branch workflow. Our branches, ordered from least-stable to most stable are:
| branch | AWS account |
|---|---|
development |
nypl-sandbox |
qa |
nypl-digital-dev |
master |
nypl-digital-dev |
If you need to introduce/update the application code, you SHOULD:
- Create feature branches off the
developmentbranch. - Send a PR pointing to the
developmentbranch upon completion of feature branch. - Once the PR is approved, it should be merged into the
developmentbranch. - When a release is to be deployed, the
developmentbranch will be merged intoqa. - Upon feeling happy with the results in QA, merge
qaintomaster.
Update event.json by running the above kinesify-data.js script for either item or bib.
Make sure you have the correct config/[bib|item]-[environment].env files. See config/deploy.example.env for an example.
Then run:
npm run deploy-[bib|item]-[development|qa|production]
Will deploy to Lambdas called [bib|item]Poster-[environment]. You can add a Kinesis stream triggers to execute function if not already added, but Kinesis stream triggers should be added automatically.