No description
Find a file
2026-02-27 22:12:36 +03:00
.docker *: Bump min required Go to 1.25 2026-02-20 15:57:30 +04:00
.github *: Bump min required Go to 1.25 2026-02-20 15:57:30 +04:00
api *: apply make modernize 2026-02-27 19:08:25 +03:00
authmate neofs: Store CORS attribute into container 2026-02-13 11:07:07 +04:00
cmd *: Remove waiter for the container operations 2026-02-24 10:19:42 +04:00
config *: Remove waiter for the container operations 2026-02-24 10:19:42 +04:00
creds go.mod: Upgraded google.golang.org/grpc v1.75.1 => v1.79.1 2026-02-24 10:45:02 +04:00
debian [#737] Debian packaging 2022-11-29 17:58:48 +03:00
docs *: Remove waiter for the container operations 2026-02-24 10:19:42 +04:00
internal Bump min required Go to 1.25 (#1258) 2026-02-24 10:30:16 +03: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 Bump min required Go to 1.25 (#1258) 2026-02-24 10:30:16 +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: Upgraded github.com/aws/aws-sdk-go-v2/credentials v1.17.64 => v1.19.10 2026-02-24 10:45:03 +04:00
go.sum go.mod: Upgraded github.com/aws/aws-sdk-go-v2/credentials v1.17.64 => v1.19.10 2026-02-24 10:45:03 +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 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.42.0 2026-02-13 11:48:20 +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.