Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

examples/aws-nodejs: update README #4534

Merged
merged 1 commit into from
Jun 28, 2023
Merged
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
123 changes: 65 additions & 58 deletions examples/aws-nodejs/README.md
Original file line number Diff line number Diff line change
@@ -1,102 +1,109 @@
# 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 Node.js (and
Express.js). It uses presigned URL at the backend level.

This README file starts with AWS as this one need to be resolved first.
## AWS Configuration

# AWS Configuration
It's assumed that you are familiar with AWS, at least, with the storage service
(S3) and users & policies (IAM).

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.

These instructions are not fit for production but tightening the security is out of the scope here.

## S3 Setup
### S3 Setup

- Create new S3 bucket in AWS (e.g. `aws-nodejs`).
- Add a bucket policy.
```{

```json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicAccess",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::aws-nodejs/*"
}
{
"Sid": "PublicAccess",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::aws-nodejs/*"
}
]
}
```
}
```

- Make the S3 bucket public.
- Add CORS configuration.
```[

```json
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"GET",
"PUT",
"HEAD",
"POST",
"DELETE"
],
"AllowedOrigins": [
"*"
],
"ExposeHeaders": []
"AllowedHeaders": ["*"],
"AllowedMethods": ["GET", "PUT", "HEAD", "POST", "DELETE"],
"AllowedOrigins": ["*"],
"ExposeHeaders": []
}
]
```
]
```

## AWS Credentials
### 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](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/loading-node-credentials-environment.html) or a [credentials file in `~/.aws/credentials`](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-credentials-node.html).
- 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](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/loading-node-credentials-environment.html)
or a
[credentials file in `~/.aws/credentials`](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-credentials-node.html).
- You will need at least `PutObject` and `PutObjectAcl` permissions.
```{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": "arn:aws:s3:::aws-nodejs/*"
}
]

```json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": ["s3:PutObject", "s3:PutObjectAcl"],
"Resource": "arn:aws:s3:::aws-nodejs/*"
}
]
}
```
# Install

## Prerequisites

Download this code or clone repository into a folder and install dependencies:

```bash
corepack yarn install
```sh
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:
Add a `.env` file to the root directory and define the S3 bucket name and port
variables like the example below:

```
S3_BUCKET=aws-nodejs
COMPANION_AWS_BUCKET=aws-nodejs
COMPANION_AWS_REGION=…
COMPANION_AWS_KEY=…
COMPANION_AWS_SECRET=…
PORT=8080
```

# Enjoy it
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:

```bash
```sh
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.*
_Feel free to check how the demo works and feel free to open an issue._