AWS Backup pricing for S3

0

Hello,

I am currently reviewing the AWS Backup pricing details for S3 buckets that regularly have new objects uploaded to them. To understand the associated backup costs, I referred to the pricing details provided on the AWS Backup pricing page: AWS Backup Pricing. https://aws.amazon.com/backup/pricing/

In Example 2, the cost components for S3 backup include:

  1. Storage cost
  2. S3 API calls (GET, LIST)
  3. EventBridge costs

The example assumes 8 GET API calls per new object. Specifically, it mentions: "S3 GET APIs charges $0.004 per 10,000 requests. Assuming 8 GET APIs per new object, max GET API charges = ($0.004/10,000) * 8 * 100 million = $320".

https://aws.amazon.com/backup/pricing/#:~:text=S3%20GET%20APIs%20charges%20%240.004%20per%2010%2C000%20requests.%20Assuming%208%20GET%20APIs%20per%20new%20object%2C%20max%20GET%20API%20charges%20%3D%20(%240.004/10%2C000)*8*100%20million%20%3D%20%24320

I am seeking clarification on why AWS Backup requires as many as 8 GET API calls per new object. Understanding the necessity of these API calls will help in accurately estimating backup costs and optimizing my backup strategy.

Also, it is difficult to distinguish the S3 API requests made by AWS Backup from those made by other services/resources (normal S3 API requests vs S3 API requests for Backup). How can one differentiate the quantity of API requests made by specific services?

Thank you for your assistance.

Best regards,

asked a year ago1.4K views
3 Answers
6

Hello,

AWS Backup makes approximately 8 S3 GET API calls per new object to verify metadata, versioning, encryption, and access controls necessary for backup purposes.

To distinguish API requests made by AWS Backup from other services:

Enable AWS CloudTrail: Logs S3 API calls with the caller identity, helping identify calls from "aws.backup". This adds some cost.

Use AWS Cost Explorer: While it doesn't show service-specific calls, it can help identify cost trends related to S3 API usage before and after implementing AWS Backup.

Monitor with AWS CloudWatch: Create metrics and alarms to monitor specific API request types, which can help in tracking and differentiating the API calls.

profile picture
EXPERT
answered a year ago
EXPERT
reviewed a year ago
3

Hi,

AWS Backup Pricing for S3: Key Points

=>Why 8 GET API Calls per Object? Metadata Retrieval: Multiple calls for object metadata. Integrity Checks: Ensuring data integrity. Versioning: Handling multiple versions. Large Objects: Breaking down large objects. Cost Components Storage Cost: Cost of storing backups.

S3 API Calls: $0.004 per 10,000 GET requests. Example: 8 GET calls per object * 100 million objects = $320. EventBridge Costs: For triggering and monitoring events. Differentiating API Requests

AWS CloudTrail: Logs all API calls. Filter by AWS Backup service.

S3 Access Logs: Detailed request logs. AWS Cost and Usage Reports (CUR): Breakdown of API requests and costs by service. Steps to Enable Logging

CloudTrail for S3: Create a Trail in CloudTrail. Enable logging for S3 data events.

S3 Access Logs: Configure logging in the S3 bucket properties. Specify a target bucket for storing logs. Using these tools, you can accurately monitor and differentiate API requests to optimize your backup costs and strategy.

EXPERT
answered a year ago
profile picture
EXPERT
reviewed a year ago
EXPERT
reviewed a year ago
2

Hello Prashant,

AWS Backup uses several S3 GET calls (around 8) per new object to check metadata, versioning, encryption, and access for backup purposes.

Unfortunately, there's no direct way within S3 to distinguish API requests by service (Backup vs. others). Here are two options to consider:

Enable CloudTrail:

This logs S3 API calls with caller identity, allowing you to identify calls from the "aws.backup" service principal. However, it adds extra cost.

Analyze Costs with Cost Explorer:

While not showing service-specific calls, it can reveal trends in S3 API costs. This helps establish a baseline before and after using AWS Backup.

Use AWS CloudWatch:

Create metrics and alarms in CloudWatch to monitor specific types of API requests. CloudWatch can aggregate and report the number of GET requests.

profile picture
EXPERT
answered a year ago
  • Note, however, that considering that the question is about costs, logging all S3 object-level operations with CloudTrail automatically increases costs even further. All data event logging in CloudTrail is separately billed. I'd suggest considering S3 server access logs instead, which are free to produce and deliver to your S3 log bucket, and only storing and accessing the logs afterwards is billed as per normal S3 pricing. There's a more complete comparison on S3 server access logs vs. CloudTrail logging for S3 here: https://docs.aws.amazon.com/AmazonS3/latest/userguide/logging-with-S3.html

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions