| Package | Version | Package | Version | | ---------------------- | ------------- | ---------------------- | ------------- | | @uppy/angular | 0.7.0-beta.5 | @uppy/instagram | 4.0.0-beta.6 | | @uppy/audio | 2.0.0-beta.6 | @uppy/locales | 4.0.0-beta.2 | | @uppy/aws-s3 | 4.0.0-beta.5 | @uppy/onedrive | 4.0.0-beta.6 | | @uppy/aws-s3-multipart | 4.0.0-beta.6 | @uppy/provider-views | 4.0.0-beta.7 | | @uppy/box | 3.0.0-beta.6 | @uppy/status-bar | 4.0.0-beta.9 | | @uppy/companion | 5.0.0-beta.9 | @uppy/transloadit | 4.0.0-beta.7 | | @uppy/companion-client | 4.0.0-beta.7 | @uppy/tus | 4.0.0-beta.6 | | @uppy/core | 4.0.0-beta.9 | @uppy/unsplash | 4.0.0-beta.7 | | @uppy/dashboard | 4.0.0-beta.9 | @uppy/url | 4.0.0-beta.7 | | @uppy/drop-target | 3.0.0-beta.5 | @uppy/utils | 6.0.0-beta.8 | | @uppy/dropbox | 4.0.0-beta.7 | @uppy/webcam | 4.0.0-beta.8 | | @uppy/facebook | 4.0.0-beta.6 | @uppy/xhr-upload | 4.0.0-beta.6 | | @uppy/form | 4.0.0-beta.4 | @uppy/zoom | 3.0.0-beta.6 | | @uppy/golden-retriever | 4.0.0-beta.5 | uppy | 4.0.0-beta.10 | | @uppy/google-drive | 4.0.0-beta.6 | | | - @uppy/audio: remove unused component props (Antoine du Hamel / #5209) - @uppy/angular: fix invalid char in `package.json` (Antoine du Hamel / #5224) - meta: use default argument value instead of `defaultProps` (Antoine du Hamel / #5222) - @uppy/angular: upgrade to Angular 18 (Antoine du Hamel / #5215) - @uppy/utils: remove unused `settle` (Antoine du Hamel / #5210) - @uppy/form: move internal property to private field (Antoine du Hamel / #5214) - @uppy/dashboard: remove unused component props (Antoine du Hamel / #5213) - @uppy/status-bar: remove unused component props (Antoine du Hamel / #5211) - @uppy/audio: move internal property to private field (Antoine du Hamel / #5207) - @uppy/aws-s3: remove todo (Mikael Finstad / #5200) - @uppy/core: remove unnecessary todo (Mikael Finstad / #5200) - @uppy/aws-s3: do not expose internal `assertHost` method (Mikael Finstad / #5200) - @uppy/aws-s3: make passing `signal` consistent (Mikael Finstad / #5200) - @uppy/core: remove `'upload-started'` event (Mikael Finstad / #5200) - @uppy/aws-s3: remove `chunkState` getter (Mikael Finstad / #5200) - @uppy/drop-target: remove `title` property (Mikael Finstad / #5200) - @uppy/golden-retriever: remove unused `ready` setters (Mikael Finstad / #5200) - @uppy/dashboard: remove deprecated `autoOpenFileEditor` option (Mikael Finstad / #5200) - @uppy/aws-s3: remove `uploaderSockets` (Mikael Finstad / #5200) - @uppy/locales: remove hacks for legacy bundle (Mikael Finstad / #5200) - @uppy/status-bar: rename `StatusBar` to `StatusBarUI` (Mikael Finstad / #5200) - @uppy/url: remove unused error handler (Mikael Finstad / #5200) - @uppy/aws-s3,@uppy/tus,@uppy/utils,@uppy/xhr-upload: remove `uploader` from `upload-progress` event (Mikael Finstad / #5200) - @uppy/webcam: remove `facingMode` option (Mikael Finstad / #5200) - @uppy/companion: invert some internal boolean options (Mikael Finstad / #5198) - @uppy/companion: rename `authProvider` to `oauthProvider` (Mikael Finstad / #5198) - @uppy/companion: remove unused headers (Mikael Finstad / #5198) - @uppy/companion: remove sanitizing of metadata (Mikael Finstad / #5198) - @uppy/companion-client: do not allow boolean `RequestOptions` (Mikael Finstad / #5198) - @uppy/companion-client: remove deprecated options (Mikael Finstad / #5198) - @uppy/companion: remove `error.extraData` (Mikael Finstad / #5198) - @uppy/companion-client: make `supportsRefreshToken` default (Mikael Finstad / #5198) - @uppy/companion-client: remove optional chaining (Mikael Finstad / #5198) - @uppy/companion: capitalize POST (Mikael Finstad / #5198) - @uppy/companion: simplify code by using modern Node.js APIs (Mikael Finstad / #5198) - @uppy/companion-client: remove `Socket` (Mikael Finstad / #5198) - @uppy/companion: rename `getExtraConfig` to `getExtraGrantConfig` (Mikael Finstad / #5198) - @uppy/companion: change `COMPANION_ENABLE_URL_ENDPOINT` default (Mikael Finstad / #5198) - @uppy/companion: change default value for Redis session prefix (Mikael Finstad / #5198) - examples: make React example up-to-date (Merlijn Vos / #5205) - @uppy/core: add type tests (Merlijn Vos / #5153) - @uppy/provider-views: PartialTree - get rid of `.onFirstRender()` (Evgenia Karunus / #5187) - @uppy/core: pass file to events consistently (Merlijn Vos / #5136) - docs: assume tree-shaking bundler is the most common case (Antoine du Hamel / #5160) - @uppy/core: remove `reason` (Antoine du Hamel / #5159) - @uppy/core: remove `resetProgress` and `reset-progress` (Mikael Finstad / #5221) |
||
|---|---|---|
| .. | ||
| public | ||
| index.js | ||
| package.json | ||
| README.md | ||
Uppy + AWS S3 with Node.JS
A simple and fully working example of Uppy and AWS S3 storage with Node.js (and Express.js). It uses presigned URL at the backend level.
AWS Configuration
It's assumed that you are familiar with AWS, at least, with the storage service (S3) and users & policies (IAM).
These instructions are not fit for production but tightening the security is out of the scope here.
S3 Setup
-
Create new S3 bucket in AWS (e.g.
aws-nodejs). -
Add a bucket policy.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicAccess", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::aws-nodejs/*" } ] } -
Make the S3 bucket public.
-
Add CORS configuration.
[ { "AllowedHeaders": ["*"], "AllowedMethods": ["GET", "PUT", "HEAD", "POST", "DELETE"], "AllowedOrigins": ["*"], "ExposeHeaders": [] } ]
AWS Credentials
You may use existing AWS credentials or create a new user in the IAM page.
- Make sure you setup the AWS credentials properly and write down the Access Key ID and Secret Access Key.
- You may configure AWS S3 credentials using
environment variables
or a
credentials file in
~/.aws/credentials. - You will need at least
PutObjectandPutObjectAclpermissions.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": ["s3:PutObject", "s3:PutObjectAcl"],
"Resource": "arn:aws:s3:::aws-nodejs/*"
}
]
}
Prerequisites
Download this code or clone repository into a folder and install dependencies:
CYPRESS_INSTALL_BINARY=0 corepack yarn install
Add a .env file to the root directory and define the S3 bucket name and port
variables like the example below:
COMPANION_AWS_BUCKET=aws-nodejs
COMPANION_AWS_REGION=…
COMPANION_AWS_KEY=…
COMPANION_AWS_SECRET=…
PORT=8080
N.B.: This example uses COMPANION_AWS_ environnement variables to facilitate
integrations with other examples in this repository, but this example does not
uses Companion at all.
Enjoy it
Start the application:
corepack yarn workspace @uppy-example/aws-nodejs start
Dashboard demo should now be available at http://localhost:8080.
You have also a Drag & Drop demo on http://localhost:8080/drag.
Feel free to check how the demo works and feel free to open an issue.