Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,10 @@ yarn build
- `yarn typecheck` - Run TypeScript type checking
- `yarn check` - Run Biome linting and formatting

### Running minio tests

Tests for `@uppy/aws-s3` need a minio server running inside Docker, and in order to run those tests you must set the environment variable `VITE_MINIO_CONFIG="test_user,test_password,http://localhost:9002/test-bucket,us-east-1"` when running the tests.

### Headless components

When adding a new component to `@uppy/components`, you have to run `yarn migrate:components` from root
Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/bundlers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,12 @@ jobs:
mkdir /tmp/artifacts && corepack yarn workspaces foreach --all
--no-private pack --install-if-needed -o /tmp/artifacts/%s-${{
github.sha }}.tgz
- name: Debug packaged uppy dependencies
run: |
rm -rf /tmp/uppy-debug
mkdir -p /tmp/uppy-debug
tar -xzf /tmp/artifacts/uppy-${{ github.sha }}.tgz --strip-components 1 -C /tmp/uppy-debug
node -e 'const pkg=require("/tmp/uppy-debug/package.json");const fields=["dependencies","peerDependencies","optionalDependencies","devDependencies"];let found=false;for(const f of fields){if(!pkg[f])continue;for(const [k,v] of Object.entries(pkg[f])){if(String(v).startsWith("workspace:")){console.log(`${f}: ${k}=${v}`);found=true;}}}if(!found)console.log("No workspace:* entries in packaged uppy package.json");'
Comment on lines +73 to +78

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure whether this change is related to this aws-s3-rewrite PR , I'll check this

@qxprakash qxprakash Jun 17, 2026

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

found it , Merlijn added it in PR #6151 - f80473e , it's a CI step that logs any workspace: versions leaking into the packaged tarball.

- name: Upload artifact
if: success()
uses: actions/upload-artifact@v6
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ jobs:
COMPANION_DOMAIN: localhost:3020
COMPANION_PROTOCOL: http
COMPANION_REDIS_URL: redis://localhost:6379
VITE_MINIO_CONFIG: "test_user,test_password,http://localhost:9002/test-bucket,us-east-1"

types:
name: Types
Expand Down
2 changes: 1 addition & 1 deletion examples/aws-companion/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,5 @@ uppy.use(Dashboard, {
plugins: ['GoogleDrive', 'Webcam'],
})
uppy.use(AwsS3, {
endpoint: 'http://localhost:3020',
companionEndpoint: 'http://localhost:3020',
})
22 changes: 14 additions & 8 deletions examples/aws-nodejs/README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
# 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.
A simple and fully working example of Uppy and AWS S3 storage with a Node.js
(Express.js) backend. It demonstrates two signing modes:

- **Client-side signing (STS)** — The server issues temporary credentials via
`GET /s3/sts`. The browser signs S3 requests locally using SigV4.
- **Server-side signing (presigned URLs)** — The browser sends each S3 operation
to `POST /s3/presign`. The server generates a presigned URL; the browser uses
it directly.

## AWS Configuration

Expand All @@ -13,8 +19,8 @@ out of the scope here.

### S3 Setup

Assuming youre trying to setup the user `MY-UPPY-USER` to put the uploaded
files to the bucket `MY-UPPY-BUCKET`, heres how you can allow `MY-UPPY-USER` to
Assuming you're trying to setup the user `MY-UPPY-USER` to put the uploaded
files to the bucket `MY-UPPY-BUCKET`, here's how you can allow `MY-UPPY-USER` to
get STS Federated Token and upload files to `MY-UPPY-BUCKET`:

1. Set CORS settings on `MY-UPPY-BUCKET` bucket:
Expand Down Expand Up @@ -54,8 +60,8 @@ get STS Federated Token and upload files to `MY-UPPY-BUCKET`:
}
```

3. Add the following Policy to `MY-UPPY-USER`: (if you don’t want to enable
signing on the client, you can skip this step)
3. Add the following Policy to `MY-UPPY-USER`: (required for client-side signing
via the STS endpoint)
```json
{
"Version": "2012-10-17",
Expand Down Expand Up @@ -100,9 +106,9 @@ COMPANION_AWS_SECRET=…
PORT=8080
```

N.B.: This example uses `COMPANION_AWS_` environnement variables to facilitate
N.B.: This example uses `COMPANION_AWS_` environment variables to facilitate
integrations with other examples in this repository, but this example does _not_
uses Companion at all.
use Companion at all.

## Enjoy it

Expand Down
Loading