Advanced usage
The processes and steps described in this page should not be applicable to the vast majority of s3gw deployments. However, depending on circumstance, one might need to perform some of these for testing or debugging.
The following sections rely on podman
for examples. Using docker
instead
should work in the same way, although option names may need to be adjusted on
occasion.
Running the container
One might need to run the container standalone, in which case it's important to
understand how to properly configure it. Running the container with --help
will provide some insight.
podman run -it quay.io/s3gw/s3gw:latest --help
Which should result in something like the following, minus eventual changes not reflected in this example:
usage: /s3gw/bin/entrypoint.sh [options... -- args]
options: --help Shows this message. --id ID Specifies a custom instance ID (default: s3gw). --cert FILE KEY Specifies SSL certificate. Expects a .crt as first argument, and a .key as second argument. --dns-name VALUE For vhost style buckets, VALUE should be the DNS domain to be used. --debug LEVEL Runs with debug. Levels available: "high", "medium", "low", "none" (default: none). --no-telemetry Disable telemetry. --telemetry-url URL Specifies telemetry URL. --with-status Enables status frontend at port 9090.
args: Any option supported by RADOS Gateway. For advanced use only.
env variables: S3GW_ID Specifies a custom instance ID. S3GW_DNS_NAME Specifies a DNS domain to be used for vhost style buckets. S3GW_DEBUG Specifies the debug level to be used. S3GW_CERT_FILE Specifies the SSL certificate file. S3GW_CERT_KEY Specifies the SSL certificate key file.
Keep in mind that to access the service, one needs to expose the required ports. For s3gw these are port 7480 for non-SSL access, and port 7481 for SSL access. This can be achieved with:
podman run -it -p 7480:7480 quay.io/s3gw/s3gw:latest
In the following sections, we will be describing some of the available options.
Using vhost style buckets
S3 supports two styles of bucket access: path and vhost. The former considers
the buckets will be part of the address path, like in my.domain.tld/my-bucket/
,
whereas the latter assumes the bucket will be part of the vhost,
my-bucket.my.domain.tld
.
By default, s3gw runs with path style buckets. One can enable vhost style buckets by providing the DNS domain name to be used for the service. For example,
podman run -it -p 7480:7480
quay.io/s3gw/s3gw:latest
--dns-name my.domain.tld
Specifying certificates
s3gw supports running with SSL, but will require a certificate to be provided. The location of this certificate must be local to the container namespace, and thus should be bind mounted into the container.
podman run -it -p 7481:7481
-v ./my-cert.crt:/data/my-cert.crt
-v ./my-cert.key:/data/my-cert.key
quay.io/s3gw/s3gw:latest
--cert /data/my-cert.crt /data/my-cert.key
The s3gw service should now be available on the host's port 7481 with SSL enabled.
Debugging output
s3gw supports four different log levels: none
, low
, medium
, and high
. By
default, s3gw runs with none
.
The vast majority of deployments will only require none
or low
, for as long
as they are behaving nicely. In case of misbehavior, it is reasonable to look
towards the logs for indication of what the problem might be. In this case, the
typical deployment will rely on medium
. Only in very exceptional situations
will a high
be useful. Keep in mind that at a high
debug level, the system
will be put under a lot of strain from the amount of outputted messages, and the
value of additional verbosity may not be significant.
Running with debug only requires specifying the --debug LEVEL
argument to the
container, such as
podman run -it -p 7480:7480
quay.io/s3gw/s3gw:latest
--debug medium
Environment variables
The available environment variables reflect the arguments accepted by the
container. These can be provided to the container using the --env VAR=VALUE
argument to podman run
. For example,
podman run -it -p 7480:7480
--env S3GW_DEBUG=medium
quay.io/s3gw/s3gw:latest
Additional arguments
The container accepts additional arguments, that will be passed directly to the
underlying RADOS Gateway binary. These should be used only if one knows what
they are doing. To obtain a small subset of the option supported, running with
-- --help
will provide some information. Please note that not all the options
provided in this help message will be applicable.