doc/radosgw/s3/commons.rst
.. toctree:: :maxdepth: -1
There are two different modes of accessing buckets: path-style and virtual-hosted-style. Path-style requests identify the bucket as the top-level directory of the request's path::
GET /mybucket HTTP/1.1
Host: cname.domain.com
Most S3 clients default to virtual-hosted-style access, where the bucket name is instead indicated as part of the fully-qualified domain name (FQDN)::
GET / HTTP/1.1
Host: mybucket.cname.domain.com
Path-style access is deprecated by AWS. See the Amazon S3 Path Deprecation Plan_ for more information.
To configure the FQDN used for the Ceph Object Gateway, for both path-style and
virtual-hosted-style access, you can either set :confval:rgw_dns_name
to cname.domain.com in the Monitor configuration database or
add cname.domain.com to the list of hostnames in your zonegroup
configuration. See :ref:ceph-conf-database for more on configuration database
and :ref:Ceph Object Gateway - Multisite Configuration <multisite> for more
on zonegroups.
Here is an example of a ceph config set command that sets :confval:rgw_dns_name
to cname.domain.com:
.. prompt:: bash #
ceph config set client.rgw.<ceph authx client for rgw> rgw_dns_name cname.domain.dom
.. tip:: You can define multiple hostnames delimited by commas directly with
the :confval:rgw_dns_name parameter.
.. tip:: When SSL is enabled, the certificates must use a wildcard in the domain name in order to match the bucket subdomains.
.. note:: When Ceph Object Gateways are behind a proxy, use the proxy's DNS
name instead. Then you can use ceph config set client.rgw to set the DNS
name for all instances.
.. note:: The static website view for the s3website API must be served under
a different domain name. This is configured separately from
:confval:rgw_dns_name, in :confval:rgw_dns_s3website_name.
+--------------------+------------------------------------------+
| Request Header | Description |
+====================+==========================================+
| CONTENT_LENGTH | Length of the request body. |
+--------------------+------------------------------------------+
| DATE | Request time and date (in UTC). |
+--------------------+------------------------------------------+
| HOST | The name of the host server. |
+--------------------+------------------------------------------+
| AUTHORIZATION | Authorization token. |
+--------------------+------------------------------------------+
+---------------+-----------------------------------+
| HTTP Status | Response Code |
+===============+===================================+
| 100 | Continue |
+---------------+-----------------------------------+
| 200 | Success |
+---------------+-----------------------------------+
| 201 | Created |
+---------------+-----------------------------------+
| 202 | Accepted |
+---------------+-----------------------------------+
| 204 | NoContent |
+---------------+-----------------------------------+
| 206 | Partial content |
+---------------+-----------------------------------+
| 304 | NotModified |
+---------------+-----------------------------------+
| 400 | InvalidArgument |
+---------------+-----------------------------------+
| 400 | InvalidDigest |
+---------------+-----------------------------------+
| 400 | BadDigest |
+---------------+-----------------------------------+
| 400 | InvalidBucketName |
+---------------+-----------------------------------+
| 400 | InvalidObjectName |
+---------------+-----------------------------------+
| 400 | UnresolvableGrantByEmailAddress |
+---------------+-----------------------------------+
| 400 | InvalidPart |
+---------------+-----------------------------------+
| 400 | InvalidPartOrder |
+---------------+-----------------------------------+
| 400 | RequestTimeout |
+---------------+-----------------------------------+
| 400 | EntityTooLarge |
+---------------+-----------------------------------+
| 403 | AccessDenied |
+---------------+-----------------------------------+
| 403 | UserSuspended |
+---------------+-----------------------------------+
| 403 | RequestTimeTooSkewed |
+---------------+-----------------------------------+
| 404 | NoSuchKey |
+---------------+-----------------------------------+
| 404 | NoSuchBucket |
+---------------+-----------------------------------+
| 404 | NoSuchUpload |
+---------------+-----------------------------------+
| 405 | MethodNotAllowed |
+---------------+-----------------------------------+
| 408 | RequestTimeout |
+---------------+-----------------------------------+
| 409 | BucketAlreadyExists |
+---------------+-----------------------------------+
| 409 | BucketNotEmpty |
+---------------+-----------------------------------+
| 411 | MissingContentLength |
+---------------+-----------------------------------+
| 412 | PreconditionFailed |
+---------------+-----------------------------------+
| 416 | InvalidRange |
+---------------+-----------------------------------+
| 422 | UnprocessableEntity |
+---------------+-----------------------------------+
| 500 | InternalError |
+---------------+-----------------------------------+
.. _Amazon S3 Path Deprecation Plan: https://aws.amazon.com/blogs/aws/amazon-s3-path-deprecation-plan-the-rest-of-the-story/