amazon-web-servicesamazon-dynamodbaws-billingaws-backup

AWS Backup DynamoDB billing


I'd like to understand better the billing composition regardless of AWS Backup on DynamoDB resources since I got an unexpected increase in my billing.

I'm aware of AWS Backup billing itself thanks to the documentation, anyway, when I access the Billing service I can notice an exponential billing pricing in DynamoDB service, on the section Amazon DynamoDB USE1-TimedBackupStorage-ByteHrs the description allows me to see that I'll be paying $0.10 per GB-month of storage used for on-demand backup, showing me that I've used 14,247.295 GB-Month (This makes sense with the billing I got) but where my doubt comes from is, where does all those GB come from? The last snapshot-size just shows 175.5 GB

I've configured my backup plan with the following parameters:

{
    "ruleName": "hourly-basis",
    "scheduleExpression": "cron(0 * ? * * *)",
    "startWindowMinutes": 60,
    "completionWindowMinutes": 180,
    "lifecycle": {
        "toDeletedAfterDays": 30
    }
}

I'm also copying snapshots into a second region on us-west-2

As you can see, I'm handling a schedule expression on an hourly basis backup because of compliance requirements. Is this enough justification for the high billing? I'm aware that backups with low RPO are commonly expensive but I just want to be sure that this billing is not higher than it should be because of any wrong Backup configuration.

Thanks in advance!


Solution

  • Just for the record, and for anyone who may have a similar problem, the root cause was as described by Caldazar, that handling hourly snapshots for a whole month makes you have 126,000 GB-Month if every snapshot has 175 GB.

    In addition to this, at the moment of writing this answer, AWS Backup doesn't support DynamoDB incremental snapshots which is also another cause for the high billing.

    Depending on your compliance requirements, you can handle snapshots for Dynamo as suggested by Ross Williams, rely on DynamoDB PITR, and use AWS Backup for weekly/monthly snapshots. In my case, we use PITR alongside DynamoDB Global Tables in case of the entire Region goes down and we cannot access the Dynamo service, again, this is more for our compliance requirements.

    Hope it helps somebody!