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.
$ npm install --save s3-cached
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
});
getBinaryObjectCached
: retrieve file content, caching additional modifications possible through parametergetTextObjectCached
: retrieve file content as string and return as promisegetJsonObjectCached
: retrieve file content as string, parse as json and return as promisegetGzipObjectCached
: retrieve file content, gunzip and return as promisegetKeysCached
: retrieve all file names in bucket with given prefixNote 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.
resetCache()
: Reset everything in cacheaws
: The underlying aws-sdk-wrap instanceType: string
Default: undefined
Specify the Bucket name you want to retrieve data from. It either has to be defined here or on every request (overwrites).
Type: object
Default: -
Passed into aws-wrap-sdk for AWS.S3()
initialization.
Type: logger
Default: null
Passed into aws-wrap-sdk.
Type: integer
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.
Type: integer
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.
Type: integer
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.
Type: string
Default: /tmp
Location to store temporary data for disk cache.