# GetBucketAccelerateConfiguration

GetBucketAccelerateConfiguration reports whether transfer acceleration is switched on for a
bucket. Transfer acceleration is not part of STRG, so there is never anything to report:
the operation checks that the bucket exists and answers with an empty `AccelerateConfiguration`
document - the same answer Amazon S3 gives for a bucket whose acceleration state has never been
set. Some tools ask about transfer acceleration while describing a bucket or before an upload,
and with this answer they carry on as usual.

**Info: Good to know on STRG**

- Transfer acceleration is not part of STRG, so the answer never contains a `Status`.
- PutBucketAccelerateConfiguration is answered with `501 NotImplemented`, so a client knows
  straight away.
- `x-amz-expected-bucket-owner` and `x-amz-request-payer` are welcome and make no difference:
  a key only ever reaches buckets of its own account, and there are no requester-pays buckets.

## When you'd use it

- **Tools that describe a bucket.** Infrastructure-as-code tools and inventory scripts written
  for Amazon S3 read every bucket setting they know about, acceleration included. On STRG
  the request succeeds with the never-configured answer, so the description completes without
  errors.
- **Upload tools that check for acceleration first.** A client that looks up the acceleration
  state before deciding which endpoint to upload to learns that it is not enabled, and uploads
  to the bucket's regional endpoint as usual.

## Request

```http
GET /?accelerate HTTP/1.1
Host: my-bucket.s3.eu-central-1.strg.com
Authorization: AWS4-HMAC-SHA256 Credential=...
x-amz-date: 20260926T120000Z
x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
```

The path-style form is `GET /my-bucket?accelerate` on `s3.eu-central-1.strg.com` -
[Addressing](https://docs.strg.com/s3-api/overview#addressing) explains both.

### Permissions

The access key needs **Read bucket settings** (`buckets:read-config`). Every access key holds
it, whether it covers all buckets or only some - a key scoped to specific buckets reads only
those. [Access keys](https://docs.strg.com/access-keys) has the details.

### URI parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `Bucket` | String | Yes | The bucket whose acceleration state to read. |
| `accelerate` | Flag | Yes | Selects this operation. Sent with no value. |

Any other query parameter is answered with `501 NotImplemented`, so a client knows straight away
that it has no effect here.

### Request headers

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `x-amz-expected-bucket-owner` | String | No | Welcome, with nothing to check: an access key only ever reaches its own account's buckets. |
| `x-amz-request-payer` | String | No | Welcome, and makes no difference: there are no requester-pays buckets on STRG. |

### Request body

None.

## Response

A successful request answers `200 OK` with an XML body.

### Response headers

| Name | Description |
| --- | --- |
| `Content-Type` | `application/xml`. |
| `x-amz-request-id` | The request ID, handy for a support request. |
| `x-amz-request-charged` | Not sent, as there are no requester-pays buckets on STRG. |

### Response body

The document has one element, and it is always empty:

| Element | Type | Description |
| --- | --- | --- |
| `AccelerateConfiguration` | Container | The root element. Always empty on STRG. |
| `Status` | String | Not sent. Amazon S3 answers `Enabled` or `Suspended` here once acceleration has been configured. |

```xml
<?xml version="1.0" encoding="UTF-8"?>
<AccelerateConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"/>
```

## Errors

These are the errors this request can return, and the situation behind each one.

| Code | HTTP status | When |
| --- | --- | --- |
| `NoSuchBucket` | 404 | The bucket does not exist, belongs to another account, is in a region other than the endpoint's, or the account stores nothing in the endpoint's region yet. |
| `AccessDenied` | 403 | The access key is scoped to buckets that do not include this one, or the account is not active. |
| `InvalidAccessKeyId` | 403 | The access key does not exist, has expired or been revoked - or it was created moments ago and is not usable yet in a region where the account already stores data, in which case the same request works shortly afterwards. |
| `SignatureDoesNotMatch` | 403 | The request signature does not match. |
| `RequestTimeTooSkewed` | 403 | The request time is more than 15 minutes from the server's. |
| `AuthorizationHeaderMalformed` | 400 | The signature's credential scope names a region other than the endpoint's. |
| `NotImplemented` | 501 | The request carries a query parameter this operation does not accept. |
| `SlowDown` | 503 | Too many requests. The `Retry-After` header says when a retry is welcome; the AWS SDKs retry on their own. |
| `ServiceUnavailable` | 503 | A temporary failure; the same request can be retried. |
| `InternalError` | 500 | An unexpected failure while checking the bucket; the same request can be retried. |

## Differences from Amazon S3

The table lists each place where STRG behaves differently, and what that means for a client.

| Aspect | Amazon S3 | STRG |
| --- | --- | --- |
| Transfer acceleration | Configurable per bucket; `Status` is `Enabled` or `Suspended` once set | Not part of STRG. The answer is always the empty, never-configured document |
| Setting it | PutBucketAccelerateConfiguration | Answered with `501 NotImplemented` |
| Bucket in another region | `301` redirect with `x-amz-bucket-region` | `404 NoSuchBucket`. A bucket is reached through its own regional endpoint. |
| `x-amz-expected-bucket-owner` | Checked against the bucket owner | Welcome, with nothing to check |

## Examples

Reading the acceleration state of `my-bucket` in `eu-central-1`:

**AWS CLI**

```bash
aws s3api get-bucket-accelerate-configuration \
  --bucket my-bucket \
  --endpoint-url https://s3.eu-central-1.strg.com \
  --region eu-central-1
```

The command succeeds and prints nothing, because the answer has no `Status`.

**Python (boto3)**

```python
import boto3

s3 = boto3.client(
    "s3",
    endpoint_url="https://s3.eu-central-1.strg.com",
    region_name="eu-central-1",
)

response = s3.get_bucket_accelerate_configuration(Bucket="my-bucket")
print(response.get("Status", "not configured"))
```

**JavaScript (AWS SDK v3)**

```javascript
import { GetBucketAccelerateConfigurationCommand, S3Client } from "@aws-sdk/client-s3";

const client = new S3Client({
  endpoint: "https://s3.eu-central-1.strg.com",
  region: "eu-central-1",
});

const response = await client.send(
  new GetBucketAccelerateConfigurationCommand({ Bucket: "my-bucket" }),
);
console.log(response.Status ?? "not configured");
```

## Related

- [GetBucketLocation](https://docs.strg.com/s3-api/GetBucketLocation)
- [GetBucketVersioning](https://docs.strg.com/s3-api/GetBucketVersioning)
- [Access keys](https://docs.strg.com/access-keys)
- [S3 API overview](https://docs.strg.com/s3-api/overview) - including the [other S3 operations](https://docs.strg.com/s3-api/overview#other-s3-operations)
