|
7 月之前 | |
---|---|---|
.. | ||
public | 10 月之前 | |
README.md | 10 月之前 | |
index.js | 9 月之前 | |
package.json | 7 月之前 |
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.
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, tightening the security is out of the scope here.
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
:
MY-UPPY-BUCKET
bucket: [
{
"AllowedHeaders": ["*"],
"AllowedMethods": ["GET", "PUT", "HEAD", "POST", "DELETE"],
"AllowedOrigins": ["*"],
"ExposeHeaders": ["ETag", "Location"]
}
]
MY-UPPY-BUCKET
: {
"Version": "2012-10-17",
"Statement": [
{
"Sid": "MyMultipartPolicyStatement1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::*:user/MY-UPPY-USER"
},
"Action": [
"s3:PutObject",
"s3:PutObjectAcl",
"s3:ListMultipartUploadParts",
"s3:AbortMultipartUpload"
],
"Resource": "arn:aws:s3:::MY-UPPY-BUCKET/*"
}
]
}
Add the following Policy to MY-UPPY-USER
: (if you don’t want to enable
signing on the client, you can skip this step)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "MyStsPolicyStatement1",
"Effect": "Allow",
"Action": ["sts:GetFederationToken"],
"Resource": ["arn:aws:sts::*:federated-user/*"]
}
]
}
You may use existing AWS credentials or create a new user in the IAM page.
~/.aws/credentials
.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=MY-UPPY-BUCKET
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.
Start the application:
corepack yarn workspace @uppy-example/aws-nodejs start
Dashboard demo should now be available at http://localhost:8080.
Feel free to check how the demo works and feel free to open an issue.