FrostFS S3 Protocol Gateway
 
 
 
Go to file
Alexey Vanin 8151753eeb [#60] Use periodic white space XML writer in Complete Multipart Upload
This mechanism is used by Amazon S3 to keep client's
connection alive while object is being constructed from
the upload parts.

Signed-off-by: Alex Vanin <a.vanin@yadro.com>
2023-03-20 13:34:22 +03:00
.docker Rename package name 2023-03-07 17:38:08 +03:00
.github [TrueCloudLab#16] Update go version to 1.18 2023-01-25 10:39:44 +03:00
api [#60] Use periodic white space XML writer in Complete Multipart Upload 2023-03-20 13:34:22 +03:00
authmate Rename package name 2023-03-07 17:38:08 +03:00
cmd [#60] Use periodic white space XML writer in Complete Multipart Upload 2023-03-20 13:34:22 +03:00
config [#60] Use periodic white space XML writer in Complete Multipart Upload 2023-03-20 13:34:22 +03:00
creds Rename package name 2023-03-07 17:38:08 +03:00
debian Rename package name 2023-03-07 17:38:08 +03:00
docs [#60] Use periodic white space XML writer in Complete Multipart Upload 2023-03-20 13:34:22 +03:00
internal [TrueCloudLab#40] Add param to configure xml decoder 2023-03-09 15:44:13 +03:00
metrics Rename package name 2023-03-07 17:38:08 +03:00
.dockerignore [#471] Add docker/* target in Makefile 2022-06-16 11:12:42 +03:00
.gitignore [TrueCloudLab#28] Add generated deb builder files to gitignore, and fix typo 2023-02-15 10:25:46 +03:00
.golangci.yml [#755] Remove deprecated linters 2022-11-24 18:03:56 +03:00
CHANGELOG.md [#35] Update SDK to not count error on client aborting 2023-03-10 11:08:21 +03:00
CONTRIBUTING.md [#2] Update docs 2022-12-20 18:24:30 +03:00
CREDITS.md Add credits 2022-07-14 12:08:52 +03:00
LICENSE [#264] Change NeoFS S3 Gateway license to AGPLv3 2021-09-20 10:38:28 +03:00
Makefile [#2] Update build 2022-12-20 18:24:30 +03:00
README.md Rename package name 2023-03-07 17:38:08 +03:00
VERSION Release v0.26.0 2022-12-28 17:06:32 +03:00
go.mod [#35] Update SDK to not count error on client aborting 2023-03-10 11:08:21 +03:00
go.sum [#35] Update SDK to not count error on client aborting 2023-03-10 11:08:21 +03:00
help.mk [#725] Fix help 2022-10-17 19:16:05 +03:00
syncTree.sh [#54] Update syncTree.sh due code relocation 2023-03-09 14:59:32 +03:00
updateTestsResult.sh [#454] Support repeating tests in resulting file 2022-06-07 17:37:05 +03:00

README.md

FrostFS logo

FrostFS is a decentralized distributed object storage integrated with the NEO Blockchain.


Report

FrostFS S3 Gateway

FrostFS S3 gateway provides API compatible with Amazon S3 cloud storage service.

Installation

go get -u git.frostfs.info/TrueCloudLab/frostfs-s3-gw

Or you can call make to build it from the cloned repository (the binary will end up in bin/frostfs-s3-gw with authmate helper in bin/frostfs-s3-authmate). To build binaries in clean docker environment, call make docker/all.

Other notable make targets:

dep          Check and ensure dependencies
image        Build clean docker image
dirty-image  Build dirty docker image with host-built binaries
format       Run all code formatters
lint         Run linters
version      Show current version

Or you can also use a Docker image provided for released (and occasionally unreleased) versions of gateway (:latest points to the latest stable release).

Execution

Minimalistic S3 gateway setup needs:

  • FrostFS node(s) address (S3 gateway itself is not a FrostFS node) Passed via -p parameter or via S3_GW_PEERS_<N>_ADDRESS and S3_GW_PEERS_<N>_WEIGHT environment variables (gateway supports multiple FrostFS nodes with weighted load balancing).
  • a wallet used to fetch key and communicate with FrostFS nodes Passed via --wallet parameter or S3_GW_WALLET_PATH environment variable.

These two commands are functionally equivalent, they run the gate with one backend node, some keys and otherwise default settings:

$ frostfs-s3-gw -p 192.168.130.72:8080 --wallet wallet.json

$ S3_GW_PEERS_0_ADDRESS=192.168.130.72:8080 \
  S3_GW_WALLET=wallet.json \
  frostfs-s3-gw

It's also possible to specify uri scheme (grpc or grpcs) when using -p or environment variables:

$ frostfs-s3-gw -p grpc://192.168.130.72:8080 --wallet wallet.json

$ S3_GW_PEERS_0_ADDRESS=grpcs://192.168.130.72:8080 \
  S3_GW_WALLET=wallet.json \
  frostfs-s3-gw

Domains

By default, s3-gw enable only path-style access. To be able to use both: virtual-hosted-style and path-style access you must configure listen_domains:

$ frostfs-s3-gw -p 192.168.130.72:8080 --wallet wallet.json --listen_domains your.first.domain --listen_domains your.second.domain

So now you can use (e.g. HeadBucket. Make sure DNS is properly configured):

$ curl --head http://bucket-name.your.first.domain:8080
HTTP/1.1 200 OK
...

or

$ curl --head http://your.second.domain:8080/bucket-name
HTTP/1.1 200 OK
...

Also, you can configure domains using .env variables or yaml file.

Documentation

Credits

Please see CREDITS for details.