No description
Find a file
2026-04-13 11:14:25 +03:00
.docker *: Bump min required Go to 1.25 2026-02-20 15:57:30 +04:00
.github workflows: upgrade S3 tests workflow to follow new actions 2026-03-30 15:33:12 +03:00
api multipart: Get proper parts on complete 2026-04-09 14:53:25 +04:00
authmate *: Use session tokens v2 2026-03-18 18:23:40 +04:00
cmd *: Use session tokens v2 2026-03-18 18:23:40 +04:00
config *: Remove waiter for the container operations 2026-02-24 10:19:42 +04:00
creds *: Use session tokens v2 2026-03-18 18:23:40 +04:00
debian [#737] Debian packaging 2022-11-29 17:58:48 +03:00
docs *: Remove Owner attribute 2026-03-26 12:08:16 +04:00
internal *: Use session tokens v2 2026-03-18 18:23:40 +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.43.1 2026-04-10 23:28:39 +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: upgrade to SDK RC18 2026-03-26 17:05:44 +03:00
go.sum go.mod: upgrade to SDK RC18 2026-03-26 17:05:44 +03: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 Makefile: add modernize target 2026-02-27 17:53:02 +03:00
README.md metrics: Update health metric state 2025-08-19 08:56:38 +04:00
VERSION CHANGELOG: release 0.43.1 2026-04-10 23:28:39 +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=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=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.