> For the complete documentation index, see [llms.txt](https://docs.north.cloud/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.north.cloud/docs/features/rightsize/s3.md).

# S3

Learn how Rightsize reviews your S3 buckets and estimates their savings.

Rightsize reviews each Amazon S3 bucket on your AWS accounts. For each bucket, it identifies the charges you can reduce. These charges come from the storage class of your data, the region where it is stored or sent, and downloads or requests. Each finding states what it means, what you can do about it, and how North determined it. Where North can estimate a saving, the finding shows a monthly figure.

![The S3 tab in Rightsize, with the cost chart and summary metrics](https://1793025303-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeLw7hj1pxE38VmG1sYVW%2Fuploads%2FY9hlB5TZlP14NGByQeeB%2Fs3-overview-v3.png?alt=media)

## How Rightsize Reviews a Bucket

Rightsize sizes an EC2 instance by suggesting a smaller instance type. An S3 bucket has no size to change. You pay for the data stored in the bucket, for each request to read or write a file, and for data sent out of it. Rightsize reviews the bucket against each of these charges.

The storage class of your data has the largest effect on cost. Each file is stored in one storage class. One bucket can have files in more than one class:

| Storage class                                               | Use                                      | Price                                                                                                                                                                     |
| ----------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Standard**                                                | Data that is read often                  | The highest storage price. AWS charges for each read request, with no fee for each GB read.                                                                               |
| **Intelligent-Tiering**                                     | Data with changing or unknown access     | AWS moves a file to a cheaper tier after 30 days without a read, and moves it back when it is read. AWS charges a monthly monitoring fee for each file of 128 KB or more. |
| **Standard-IA** and **One Zone-IA**                         | Data that is read less than once a month | A lower storage price, plus a fee for each GB read                                                                                                                        |
| **Glacier Instant Retrieval**                               | Data that is read about once a quarter   | A lower storage price again, and a higher fee for each GB read                                                                                                            |
| **Glacier Flexible Retrieval** and **Glacier Deep Archive** | Archive data                             | The lowest storage prices. A file must be restored before you can read it.                                                                                                |

The right class for your data depends on how often each file is read. North does not read the files in your buckets, so it has no data on which files are read. For this reason, each finding states your options as conditions. For example: "If files go unread for weeks: turn on Intelligent-Tiering with a lifecycle rule." You know which condition applies to your data, so you decide whether to act.

Rightsize uses three sources for each bucket:

* **Your AWS bill** - the charges for each bucket, by storage class, requests, transfer and fees. The results cover the same period as every other Rightsize service. See [Rightsize](/docs/features/rightsize.md).
* **Daily CloudWatch metrics** - the stored data and the number of files in each bucket. Rightsize reads these metrics with the monitoring access described on the [Rightsize](/docs/features/rightsize.md) page.
* **Bucket settings** - the lifecycle, versioning, replication, Intelligent-Tiering and Requester Pays settings of each bucket. See Bucket Settings Access, below.

## Findings

To make the S3 findings easier to follow, you can think of them in three categories. Each category covers one question about your bucket. One bucket can have findings from more than one category:

* **Storage class and Intelligent-Tiering** - whether your data is in a storage class that matches how often you read it. Data you rarely read costs less in a cheaper class, but data you read often can cost more there.
* **Region** - where your data is stored and where it is sent. Storage prices differ by region, so the same data can cost less elsewhere. AWS also charges a fee to send data between regions.
* **Caching** - how your files are delivered and read. When apps read the same files often, or people download them often, caching those files can reduce the request and download charges.

### Storage Class and Intelligent-Tiering

These findings cover whether your data is in a storage class that fits how often it is read.

| Finding               | Meaning                                                                                                                                                             | Your options                                                                     | Applies when                                                                                                                                                                                                    |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Automatic tiering** | AWS moves files left unread for 30 days to a cheaper tier.                                                                                                          | If files go unread for weeks: turn on Intelligent-Tiering with a lifecycle rule. | 90% or more of the bucket's storage is Standard, storage costs $50 or more a month, and the bill shows no Intelligent-Tiering charges. The payback period of the one-time transition cost is 12 months or less. |
| **Read fees**         | AWS charges a fee for each GB read from Standard-IA, One Zone-IA and Glacier Instant Retrieval. When data is read often, the fees are more than the storage saving. | If the data is read every month: copy it back to S3 Standard.                    | Read fees are $50 or more a month and 20% or more of the bucket's cost, and the estimated saving is more than $0.                                                                                               |
| **Early-delete fees** | Data left a cheaper class before its minimum stay, so you paid a fee.                                                                                               | If a lifecycle rule caused it: change the rule's timing.                         | Early-delete fees are $1 or more and 5% or more of the bucket's cost.                                                                                                                                           |
| **No lifecycle rule** | No enabled lifecycle rule moves or deletes current files on a schedule.                                                                                             | If old data is rarely needed: add a rule that moves or deletes it.               | Storage costs $50 or more a month, and Rightsize can read the bucket's lifecycle rules.                                                                                                                         |

Some buckets have a lifecycle rule that already moves the whole bucket to a cheaper class or to Intelligent-Tiering. These buckets get no automatic tiering finding and no lifecycle finding.

{% hint style="info" %}
**A note on small files.** When a bucket's average file is under 128 KB, the bucket detail shows a warning icon beside **Average object size**. In Standard-IA, One Zone-IA and Glacier Instant Retrieval, AWS bills each file under 128 KB as 128 KB. In Intelligent-Tiering, these files stay at the Standard price and have no monitoring fee. Moving such a bucket to a cheaper class could raise its cost, so the bucket gets no automatic tiering finding.
{% endhint %}

### Region

S3 storage prices differ by region. AWS also charges for data sent from one region to another. These findings cover where your data is stored and where it is sent.

| Finding                        | Meaning                                                       | Your options                                                                                                                    | Applies when                                                                                               |
| ------------------------------ | ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| **Cheaper region**             | The same storage costs less in another region.                | If the apps that read the bucket can move too, and your data can be stored there: copy the eligible data to the cheaper region. | The move saves $50 or more a month, and the payback period of the one-time copy cost is 12 months or less. |
| **Data sent to other regions** | Data copied or read across regions has a transfer fee per GB. | If an app reads across regions: move the app, or move the data if your data can be stored in the app's region.                  | Transfer to other regions is $50 or more a month and 20% or more of the bucket's cost.                     |

Rightsize compares prices only with regions in the same geography as the bucket. For example, it compares US regions with other US regions. Data in Glacier Flexible Retrieval, Glacier Deep Archive, and the optional archive tiers of Intelligent-Tiering stays in the current region. The estimate does not include it.

If your bucket replicates data to another region, part of the transfer charge can be replication. The finding states when this applies.

### Caching

These findings cover how files leave the bucket and how often your apps read and write them.

| Finding                         | Meaning                                                                        | Your options                                                                                                         | Applies when                                                                                                                   |
| ------------------------------- | ------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| **CloudFront for busy buckets** | Popular files downloaded from the internet can load faster through CloudFront. | If files are downloaded often from the internet and are suitable for caching: put CloudFront in front of the bucket. | Internet downloads cost $100 or more a month and 20% or more of the bucket's cost, and the average download is 200 KB or more. |
| **Costly requests**             | Reading and writing files is a large share of the bucket's cost.               | If an app re-reads files: cache them. If files are tiny: bundle them.                                                | Request charges are $50 or more a month and 35% or more of the bucket's cost.                                                  |

## How North Estimates Savings

Five findings show an estimated monthly saving when the inputs are available, and their savings count toward **Available Savings**. The other three findings show no figure.

| Finding                     | Savings figure                                                                                                                                                                       |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Automatic tiering           | An estimate, with a one-time transition cost and a payback period                                                                                                                    |
| Cheaper region              | An estimate, with a one-time copy cost and a payback period                                                                                                                          |
| Read fees                   | An estimate, with a one-time copy cost and a payback period. When the file count for a storage class is missing, the finding shows the saving without a copy cost or payback period. |
| Early-delete fees           | "Up to" the fees charged that month. The finding shows no figure until the billing month closes.                                                                                     |
| Data sent to other regions  | "Up to" the transfer charge that month                                                                                                                                               |
| CloudFront for busy buckets | None                                                                                                                                                                                 |
| Costly requests             | None                                                                                                                                                                                 |
| No lifecycle rule           | None                                                                                                                                                                                 |

For the current billing month, the S3 savings figures are provisional. Rightsize calculates them from the days of billing and daily metrics so far, on the assumption that usage continues at the same level. Rightsize does not project one-time costs for the current month.

### Prices and Your Discount

Each estimate uses AWS list prices for your current cost and for the cost after the change. North then multiplies both by the bucket's discount: the bucket's billed charges divided by the same charges at list prices. Your discount therefore applies on both sides. The bucket detail states the date of the list prices and the billing month, under **Prices and assumptions**.

### One-Time Costs and Payback

A change to a storage class or a region has a cost of its own. AWS charges a fee for each file that a lifecycle rule moves into Intelligent-Tiering. A copy to another region or class has transfer, read and write charges. Each estimate shows this one-time cost and a payback period:

```
payback period = one-time cost ÷ monthly saving
```

For automatic tiering, North also subtracts the monthly Intelligent-Tiering monitoring fee from the saving. The payback period does not include the time files spend waiting to enter cheaper tiers.

### The Unread-Data Assumption

North has no data on which files in your bucket go unread. For the automatic tiering estimate, North therefore assumes that 80% of the bucket's data goes unread for 30 days or more. North calibrated this figure on how data moves between Intelligent-Tiering tiers over time. Actual savings depend on how often your files are read, so they may be lower or higher than the estimate. North uses the same calibration for the split of unread data. It assumes that 19% is in the Infrequent Access tier and the rest is in the Archive Instant Access tier. Expand **How North estimated this** on the finding to see the assumptions for your bucket.

Here is an example at AWS list prices. A bucket in us-east-1 has 10 TB in Standard, as 20 million files.

```
storage saving   = 10,240 GB × 80% × ($0.023 − $0.005615) = $142.42 a month
monitoring fee   = 20,000,000 files × $0.0025 ÷ 1,000      = $50.00 a month
monthly saving   = $142.42 − $50.00                          = $92.42 a month
transition cost  = 20,000,000 files × $0.01 ÷ 1,000          = $200.00, one time
payback period   = $200.00 ÷ $92.42                          = about 2.2 months
```

In this example, $0.023 is the Standard price per GB a month. $0.005615 is the price of the unread data after it moves. It is 19% at the Infrequent Access price of $0.0125, plus 81% at the Archive Instant Access price of $0.004. Dollar figures are rounded to the cent. Rightsize uses the daily file count of the whole bucket. As a result, the monitoring fee and the transition cost in the estimate can be higher than what AWS charges.

### Maximum Figures

The early-delete and transfer findings show the charge on your bill as an "Up to" figure. The saving you get can be lower. For example, to avoid an early-delete fee, you keep data in Standard for longer, which costs more to store. To avoid a transfer charge, you move the app or the data, which has its own costs.

### Buckets With More Than One Saving

Some changes act on the same data. For example, if the bucket moves to a cheaper region, the tiering saving is calculated at that region's prices. So that each dollar counts once, Rightsize calculates two plans for a bucket with more than one saving:

* **Stay** - the bucket stays in its region, and every other finding with a figure applies.
* **Move** - the bucket moves to the cheaper region, and every other finding with a figure applies at that region's prices.

Available Savings counts the plan with the larger saving, once for each bucket. In the bucket detail, each finding shows its saving as if you made only that change. **Estimated savings** shows the plan, its one-time cost and its payback period. Expand **What this plan includes** to see the findings in the plan.

### Findings Without a Savings Figure

* **CloudFront for busy buckets** - the delivery cost through CloudFront depends on caching and traffic. The CloudFront free tier also applies to your whole AWS account, so no single bucket has its own share of it.
* **Costly requests** - the saving depends on how many reads a cache serves. The bill does not show that, so North cannot estimate it.
* **No lifecycle rule** - the saving depends on what the rule does and how old the data is.

## Bucket States

Each bucket has one state:

| State                 | Meaning                                                                                                                                         |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| **Not optimized**     | The bucket has one or more findings.                                                                                                            |
| **Optimized**         | Rightsize reviewed the bucket, and no finding applies.                                                                                          |
| **Insufficient data** | The bucket has no finding, and an input for at least one finding is missing. For example, the daily metrics, a price, or the bucket's settings. |

For an Optimized or Insufficient data bucket, the bucket detail states the reason. The reasons include the following:

| Reason                               | Meaning                                                                                                                     |
| ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------- |
| **Already uses Intelligent-Tiering** | Your bill shows Intelligent-Tiering charges for the bucket, so it gets no automatic tiering finding.                        |
| **Archive storage**                  | The bucket is in Glacier Flexible Retrieval or Glacier Deep Archive, and no finding applies to it.                          |
| **Monitoring access denied**         | Rightsize cannot read the bucket's daily metrics, because monitoring access is not granted for the bucket's member account. |
| **Bucket settings access denied**    | Rightsize does not have the permissions to read the bucket's settings. See Bucket Settings Access, below.                   |
| **Bucket settings not checked**      | Rightsize has not read the bucket's settings yet.                                                                           |

## Using the S3 Tab

Select **S3** in the service selector at the top of the Rightsize page. The tab shows a cost chart, summary metrics, a note on the S3 bill, and a table of buckets.

* **Summary metrics** - **Buckets in scope**, **Available Savings**, and the number of buckets that are **Not optimized**, **Optimized** and **Insufficient data**. Hover over the icon beside Available Savings to see how the total is calculated.
* **Bill note** - the share of your S3 bill that the buckets in scope cover. Some charges are billed without a bucket ID, or by buckets outside the analysis scope, such as buckets below the analysis cost floor. The note states both amounts. Table filters, including the account filter, do not change its totals.
* **Filters** - narrow the table by **Region**, **Storage class**, **Reason**, **Cohort**, or account. **Non-Optimized** is on by default and shows only Not optimized buckets. Use **Search** to find a bucket by name.

![The S3 bucket table](https://1793025303-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeLw7hj1pxE38VmG1sYVW%2Fuploads%2FKpWPwpt6zfM12skB6V0f%2Fs3-bucket-table.png?alt=media)

The table has one row for each bucket in scope:

* **Class mix** - the share of the bucket's storage in each storage class, from your bill. Hover over a segment to see the class and its share.
* **Stored data** - the bucket's size, from the daily metrics.
* **Billed cost** - the bucket's charges in the billing month.
* **Est. savings** - the bucket's monthly saving. For a bucket with more than one saving, this is the saving of its plan.
* **Daily metrics** - the number of days with daily metrics in the billing month, or the reason they are missing.
* **Finding** - one of the bucket's findings, and a count of the others, for example "Automatic tiering +1 more". The bucket detail lists every finding.

### The Bucket Detail

Click a row's **AI Suggestion** button to open the bucket detail. Use it to see what each finding is based on before you change the bucket.

![The bucket detail for a bucket with an automatic tiering finding](https://1793025303-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeLw7hj1pxE38VmG1sYVW%2Fuploads%2FSENzTQh9BWpnBAb0BTh1%2Fs3-tiering-detail-v2.png?alt=media)

* **Current State** - the bucket's member account, region, billed cost, stored data, file count, and average object size. It also shows the share of storage in each class.
* **Noros Recommendation** - each finding, with its options and its savings figure. Expand **How North estimated this** or **How North determined this** to see the charge and the assumptions behind the finding.
* **Estimated savings** - the bucket's plan, its saving, its one-time cost, and its payback period. Expand **Prices and assumptions** to see the date of the list prices and the billing month.
* **Daily metrics** - a chart of the bucket's stored data or file count for each day.
* **Supporting evidence** - what the bill shows for the bucket, and the inputs that are missing. The **Billed cost breakdown** splits the cost into storage, requests, transfer, monitoring, retrieval and minimum-duration charges.

![The bucket detail for a bucket with a CloudFront finding and no savings figure](https://1793025303-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeLw7hj1pxE38VmG1sYVW%2Fuploads%2FBU0EYPF7SJIuiPLqYtpQ%2Fs3-cloudfront-detail.png?alt=media)

## Bucket Settings Access

Rightsize reads five settings of each bucket to remove advice that does not apply. For example, a bucket whose lifecycle rule already moves the whole bucket gets no tiering finding. Rightsize shows the **No lifecycle rule** finding only when it can read these settings.

| Permission                              | What Rightsize reads                                             |
| --------------------------------------- | ---------------------------------------------------------------- |
| `s3:GetLifecycleConfiguration`          | The bucket's lifecycle rules                                     |
| `s3:GetBucketVersioning`                | Whether versioning is on                                         |
| `s3:GetReplicationConfiguration`        | Whether the bucket replicates data to another region             |
| `s3:GetIntelligentTieringConfiguration` | Whether the optional archive tiers of Intelligent-Tiering are on |
| `s3:GetBucketRequestPayment`            | Whether Requester Pays is on                                     |

These permissions give access to bucket settings only. They do not give access to the files in your buckets. The North stack adds them to North's role in each account. See [AWS permissions](/docs/getting-started/permissions-required/aws-permissions.md).

If you onboarded before these permissions were added, update your North stack to grant them. See [Update Your North Stack](/docs/getting-started/quickstart/aws-onboarding.md#update-your-north-stack). Until you do, the S3 tab shows a banner with the number of affected buckets and the member accounts without the permissions. Select **Show affected buckets** to see them in the table. If you set up North with Terraform, select the link in the banner to copy the permissions for your Terraform file. In the meantime, Rightsize shows every finding that uses only your bill and daily metrics.

## S3 Settings

S3 uses the Rightsize settings described on the [Rightsize](/docs/features/rightsize.md#rightsize-settings) page. Two settings work differently for S3:

* **Never touch** - add buckets by name to keep them out of scope, whatever they cost.
* **Per-service overrides** - select **S3** to set **Min savings** and **Min savings percent**. Rightsize does not show an S3 finding that saves less than this amount each month, or less than this share of the bucket's cost. An empty field uses the account default, which depends on your profile. The defaults are $5 and 10% for Conservative, $1 and 5% for Balanced, and $0 and 0% for Aggressive. These floors apply only to findings that have a savings figure.

## Limitations

* Rightsize only recommends. It does not change a bucket's storage class, lifecycle rules or region.
* The automatic tiering estimate uses the 80% unread-data assumption for every bucket.
* Buckets in AWS GovCloud and China regions are not analyzed, as for every Rightsize service.
* The cheaper region finding does not include data in Glacier Flexible Retrieval, Glacier Deep Archive, or the optional archive tiers of Intelligent-Tiering.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.north.cloud/docs/features/rightsize/s3.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
