2022-12-15 13:37:18 +00:00
|
|
|
# FrostFS S3 Gateway
|
2020-12-02 09:46:51 +00:00
|
|
|
|
2022-12-15 13:37:18 +00:00
|
|
|
FrostFS S3 gateway provides API compatible with Amazon S3 cloud storage service.
|
2021-06-10 13:29:12 +00:00
|
|
|
|
|
|
|
## Installation
|
|
|
|
|
2022-12-15 13:37:18 +00:00
|
|
|
```go get -u github.com/TrueCloudLab/frostfs-s3-gw```
|
2021-06-10 13:29:12 +00:00
|
|
|
|
|
|
|
Or you can call `make` to build it from the cloned repository (the binary will
|
2022-12-15 13:37:18 +00:00
|
|
|
end up in `bin/frostfs-s3-gw` with authmate helper in `bin/frostfs-s3-authmate`).
|
2022-06-15 10:30:55 +00:00
|
|
|
To build binaries in clean docker environment, call `make docker/all`.
|
2021-06-10 13:29:12 +00:00
|
|
|
|
2022-06-15 10:30:55 +00:00
|
|
|
Other notable make targets:
|
2021-06-10 13:29:12 +00:00
|
|
|
|
|
|
|
```
|
|
|
|
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
|
2022-12-15 13:37:18 +00:00
|
|
|
image](https://hub.docker.com/r/nspccdev/frostfs-s3-gw) provided for released
|
2021-06-10 13:29:12 +00:00
|
|
|
(and occasionally unreleased) versions of gateway (`:latest` points to the
|
|
|
|
latest stable release).
|
|
|
|
|
|
|
|
## Execution
|
|
|
|
|
|
|
|
Minimalistic S3 gateway setup needs:
|
2022-12-15 13:37:18 +00:00
|
|
|
* FrostFS node(s) address (S3 gateway itself is not a FrostFS node)
|
2021-06-10 13:29:12 +00:00
|
|
|
Passed via `-p` parameter or via `S3_GW_PEERS_<N>_ADDRESS` and
|
|
|
|
`S3_GW_PEERS_<N>_WEIGHT` environment variables (gateway supports multiple
|
2022-12-15 13:37:18 +00:00
|
|
|
FrostFS nodes with weighted load balancing).
|
|
|
|
* a wallet used to fetch key and communicate with FrostFS nodes
|
2022-07-28 13:26:42 +00:00
|
|
|
Passed via `--wallet` parameter or `S3_GW_WALLET_PATH` environment variable.
|
2021-06-10 13:29:12 +00:00
|
|
|
|
|
|
|
These two commands are functionally equivalent, they run the gate with one
|
|
|
|
backend node, some keys and otherwise default settings:
|
|
|
|
```
|
2022-12-15 13:37:18 +00:00
|
|
|
$ frostfs-s3-gw -p 192.168.130.72:8080 --wallet wallet.json
|
2021-06-10 13:29:12 +00:00
|
|
|
|
|
|
|
$ S3_GW_PEERS_0_ADDRESS=192.168.130.72:8080 \
|
2021-06-25 09:54:01 +00:00
|
|
|
S3_GW_WALLET=wallet.json \
|
2022-12-15 13:37:18 +00:00
|
|
|
frostfs-s3-gw
|
2021-06-10 13:29:12 +00:00
|
|
|
```
|
2021-06-10 08:15:32 +00:00
|
|
|
It's also possible to specify uri scheme (grpc or grpcs) when using `-p` or environment variables:
|
|
|
|
```
|
2022-12-15 13:37:18 +00:00
|
|
|
$ frostfs-s3-gw -p grpc://192.168.130.72:8080 --wallet wallet.json
|
2021-06-10 08:15:32 +00:00
|
|
|
|
|
|
|
$ S3_GW_PEERS_0_ADDRESS=grpcs://192.168.130.72:8080 \
|
2021-06-25 09:54:01 +00:00
|
|
|
S3_GW_WALLET=wallet.json \
|
2022-12-15 13:37:18 +00:00
|
|
|
frostfs-s3-gw
|
2021-06-10 08:15:32 +00:00
|
|
|
```
|
2021-06-10 13:29:12 +00:00
|
|
|
|
2022-08-30 10:52:37 +00:00
|
|
|
## 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`:
|
|
|
|
|
|
|
|
```shell
|
2022-12-15 13:37:18 +00:00
|
|
|
$ frostfs-s3-gw -p 192.168.130.72:8080 --wallet wallet.json --listen_domains your.first.domain --listen_domains your.second.domain
|
2022-08-30 10:52:37 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
So now you can use (e.g. `HeadBucket`. Make sure DNS is properly configured):
|
|
|
|
|
|
|
|
```shell
|
|
|
|
$ curl --head http://bucket-name.your.first.domain:8080
|
|
|
|
HTTP/1.1 200 OK
|
|
|
|
...
|
|
|
|
```
|
|
|
|
|
|
|
|
or
|
|
|
|
|
|
|
|
```shell
|
|
|
|
$ 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.
|
|
|
|
|
2021-08-18 19:18:49 +00:00
|
|
|
## Documentation
|
2021-06-10 13:29:12 +00:00
|
|
|
|
2021-08-18 19:18:49 +00:00
|
|
|
- [Configuration](./docs/configuration.md)
|
2022-12-15 13:37:18 +00:00
|
|
|
- [FrostFS S3 AuthMate](./docs/authmate.md)
|
|
|
|
- [FrostFS Tree service](./docs/tree_service.md)
|
2021-08-18 19:18:49 +00:00
|
|
|
- [AWS CLI basic usage](./docs/aws_cli.md)
|
2021-08-19 17:16:49 +00:00
|
|
|
- [AWS S3 API compatibility](./docs/aws_s3_compat.md)
|
2021-08-24 10:39:18 +00:00
|
|
|
- [AWS S3 Compatibility test results](./docs/s3_test_results.md)
|
2021-06-23 16:44:44 +00:00
|
|
|
|
2022-07-14 08:40:57 +00:00
|
|
|
## Credits
|
|
|
|
|
|
|
|
Please see [CREDITS](CREDITS.md) for details.
|