s3-cached
Version:
S3 File Access Abstraction providing Memory and Disk Caching Layer
108 lines (70 loc) • 3.76 kB
Markdown
# Cached S3 Wrapper
[](https://circleci.com/gh/blackflux/s3-cached)
[](https://coveralls.io/github/blackflux/s3-cached?branch=master)
[](https://dependabot.com)
[](https://david-dm.org/blackflux/s3-cached)
[](https://www.npmjs.com/package/s3-cached)
[](https://www.npmjs.com/package/s3-cached)
[](https://github.com/semantic-release/semantic-release)
[](https://github.com/blackflux/js-gardener)
S3 File Access Abstraction providing Memory and Disk Caching Layer. Useful e.g. in lambda functions if you want to reduce the amount of s3 access for serving (semi-)static files.
## What it does
- Access abstraction to access JSON and GZipped data on AWS S3
- Two Layer caching (memory and disk)
- Allows you to define cache constraints like TTL
# Getting Started
### Install
$ npm install --save s3-cached
### Request S3 Files
<!-- eslint-disable import/no-extraneous-dependencies, import/no-unresolved -->
```javascript
const s3 = require('s3-cached')({
bucket: 'YOUR_BUCKET_NAME',
awsSdkWrap: AwsSdkWrap(/* ... */)
});
s3.getJsonObjectCached('large.json').then((json) => {
// do something with the json data
}).catch((err) => {
// there has been an error
});
```
# Available functions
- `getBinaryObjectCached`: retrieve file content, caching additional modifications possible through parameter
- `getTextObjectCached`: retrieve file content as string and return as promise
- `getJsonObjectCached`: retrieve file content as string, parse as json and return as promise
- `getGzipObjectCached`: retrieve file content, gunzip and return as promise
- `getKeysCached`: retrieve all file names in bucket with given prefix
Note that you can specify the ttl and/or custom bucket on a per file basis by calling
e.g. `s3.getJsonObjectCached(FILE_NAME, { ttl, bucket })`. For exact method signatures please check the code.
## Other Function / Exports
- `resetCache()`: Reset everything in cache
- `aws`: The underlying [aws-sdk-wrap](https://www.npmjs.com/package/aws-sdk-wrap) instance
# Options
### bucket
Type: `string`<br>
Default: `undefined`
Specify the Bucket name you want to retrieve data from. It either has to be defined here or on every request (overwrites).
### s3Options
Type: `object`<br>
Default: -
Passed into [aws-wrap-sdk](https://github.com/blackflux/aws-sdk-wrap) for `AWS.S3()` initialization.
### logger
Type: `logger`<br>
Default: `null`
Passed into [aws-wrap-sdk](https://github.com/blackflux/aws-sdk-wrap).
### ttl
Type: `integer`<br>
Default: `600`
Define how long a cached file is kept by default. *This can be overwritten on a per-file basis* by passing a second parameter into the function.
### memoryLimit
Type: `integer`<br>
Default: `100`
Define how many cached entities can be hold in memory at the same time. If more entities are present, the earliest are discarded from memory cache.
### diskMaxSize
Type: `integer`<br>
Default: `469762048`
Maximum amount of disk space in bytes used by disk cache. Earliest files are discarded from file cache if more space is used.
### diskTmpDirectory
Type: `string`<br>
Default: `/tmp`
Location to store temporary data for disk cache.