# [s3.js](https://git.rootprojects.org/root/s3.js) | a [Root](https://rootprojects.org) project > Minimalist S3 client A lightweight alternative to the s3 SDK that uses only @root/request and aws4. - set() - get() - head() - delete() - sign() Download a file from S3 ```js s3.get({ accessKeyId, secretAccessKey, region, bucket, prefix, key }); ``` Upload a new file to S3 ```js s3.set({ accessKeyId, secretAccessKey, region, bucket, prefix, key, body, size }); ``` Return signed URL without fetching. ```js s3.sign({ method: 'get', accessKeyId, secretAccessKey, region, bucket, prefix, key }); ``` If the body is a stream then `size` must be set to `fs.statSync(filePath).size`, or the request will fail: ``` 501 NotImplementedA header you provided implies functionality that is not implemented ```