Skip to content

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.