No description
Find a file
2026-10-01 19:34:35 +03:00
.docker authmatesrv: Add the authbox service 2026-09-02 12:38:45 +04:00
.github .github: upgrade Actions 2026-08-27 11:25:34 +00:00
api Add versioned container support (#1357) 2026-10-01 15:24:26 +03:00
authmate *: Use HPKE for access boxes 2026-09-14 09:59:38 +04:00
cmd *: Update pool when netmap changes 2026-10-01 17:38:09 +04:00
config *: Pull NeoFS endpoints from network map 2026-09-29 12:43:05 +04:00
creds *: Use HPKE for access boxes 2026-09-14 09:59:38 +04:00
debian authmatesrv: Add the authbox service 2026-09-02 12:38:45 +04:00
docs *: Update pool when netmap changes 2026-10-01 17:38:09 +04:00
internal *: Update pool when netmap changes 2026-10-01 17:38:09 +04:00
.dockerignore [#471] Add docker/* target in Makefile 2022-06-16 11:12:42 +03:00
.gitignore gitignore: drop obsolete tree service 2025-05-05 15:10:24 +03:00
CHANGELOG.md CHANGELOG: release 0.47.0 2026-10-01 18:07:59 +03:00
CONTRIBUTING.md [#579] Add CONTRIBUTING guide 2022-07-06 10:49:46 +03:00
CREDITS.md Add credits 2022-07-14 12:08:52 +03:00
go.mod go.mod: Update github.com/nspcc-dev/neofs-contract v0.26.1 => v0.27.0 2026-10-01 17:38:08 +04:00
go.sum go.mod: Update github.com/nspcc-dev/neofs-contract v0.26.1 => v0.27.0 2026-10-01 17:38:08 +04:00
help.mk [#725] Fix help 2022-10-17 19:16:05 +03:00
LICENSE [#264] Change NeoFS S3 Gateway license to AGPLv3 2021-09-20 10:38:28 +03:00
Makefile *: Bump min required Go to 1.26 2026-08-25 13:52:25 +04:00
README.md authmatesrv: Add the authbox service 2026-09-02 12:38:45 +04:00
VERSION CHANGELOG: release 0.47.0 2026-10-01 18:07:59 +03:00

NeoFS S3 Gateway

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

Installation

Binaries are provided for all releases, you can also use a Docker image (:latest points to the latest stable release).

Build

Gateway can be built with a simple make. Currently it requires curl and jq to be installed.

Execution

Minimalistic S3 gateway setup needs:

  • NeoFS node(s) address (S3 gateway itself is not a NeoFS node) Passed via -p parameter or via S3_GW_PEERS_<N>_ADDRESS and S3_GW_PEERS_<N>_WEIGHT environment variables (gateway supports multiple NeoFS nodes with weighted load balancing).
  • a wallet used to fetch key and communicate with NeoFS nodes Passed via --wallet parameter or S3_GW_WALLET_PATH environment variable.
  • an RPC (blockchain JSON-RPC) address passed via -r parameter or S3_GW_FSCHAIN_ENDPOINTS environment variable.
  • a listen_address parameter, if address localhost:8080 is occupied already.

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

$ neofs-s3-gw -r http://192.168.130.72:30333 -p 192.168.130.72:8080 --listen_address=0.0.0.0:19080 --wallet wallet.json

$ S3_GW_PEERS_0_ADDRESS=192.168.130.72:8080 \
  S3_GW_FSCHAIN_ENDPOINTS=http://192.168.130.72:30333 \
  S3_GW_SERVER_0_ADDRESS=0.0.0.0:19080 \
  S3_GW_WALLET_PATH=wallet.json \
  neofs-s3-gw

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

$ neofs-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_PATH=wallet.json \
  neofs-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:

$ neofs-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.

Metrics

Gateway Health Status

You can use the neofs_s3_gw_state_health metric to monitor the health status of the gateway.
The metric exposes the following status codes:

  • 0 - Unhealthy: The application cannot process user requests.
  • 1 - Starting: The application is starting.
  • 2 - Ready: The application has started and is serving user requests.

Documentation

Credits

Please see CREDITS for details.