This is a Node.js server that allows you to customize the routing of files stored in an S3 bucket. It provides a simple way to access and download files stored in S3 using custom routes.
- Customizable routing: Map S3 bucket files to custom routes in the server configuration file.
- Simple S3 configuration: Store all S3 configurations, including bucket, endpoint, region, access key ID, and secret access key, in a single JSON file.
- Dynamic configuration reloading: The server reloads the configuration file on each request.
- Logging: All operations and access to the server are logged to separate log files for traceability.
Before running the server, make sure you have the following prerequisites installed on your machine:
- Node.js (v14 or higher)
- NPM (Node Package Manager)
- Clone this repository to your local machine or download the files as a ZIP.
- Open a terminal or command prompt and navigate to the project directory.
- Run the following command to install the project dependencies:
npm install
- Open the
config-example.json
file located in the project root directory. - Update the S3 configuration properties according to your setup:
port
: Port number on which the server should listen for incoming requests.bucket
: Name of the S3 bucket where your files are stored.endpoint
: The endpoint URL for your S3 service (e.g.,https://s3.amazonaws.com
).region
: The AWS region of your S3 bucket.accessKeyId
: The access key ID for your AWS account.secretAccessKey
: The secret access key for your AWS account.routing
: Custom routing configuration in"Request URL": "Target Relative URL in bucket"
format. Map file paths in the S3 bucket to custom routes in the server (e.g.,"avatar": "avatar.png"
).
- Start the server by running the following command in the project directory:
npm index
- Once the server is running, you can access the files stored in the S3 bucket using the custom routes defined in the configuration.
- Example: If you have mapped
"avatar.png"
to"avatar"
, you can download the file by accessinghttp://localhost/avatar
in your browser.
- Example: If you have mapped
- Server logs are stored in the
logs
directory. - Each log file is named with the date in the format
yyyy-MM-dd.log
. - Logs contain information about each operation, including status code, request URL, and target URL.
Contributions are welcome! If you find any issues or have suggestions for improvements, please submit a pull request or open an issue on the GitHub repository.