Amazon DynamoDB Requirements and Considerations

Before you protect your DynamoDB using Cohesity Cloud Protection Service, ensure you have met the prerequisites and reviewed the considerations.

For information on the supported cloud regions where you can back up this source, see Supported Workloads and Cloud Regions.

Account Requirements

To register your AWS account, run the CloudFormation Template (CFT) and add permissions to the IAM user.

The tables below list the permissions used by Cohesity in your AWS account. You do not need to add these permissions manually (except the IAM User Permissions to Execute CFT), as they are automatically added when you run the CFT provided by Cohesity during your AWS account registration with the Cohesity Cloud Protection Service.

IAM User Permissions to Execute CFT

To register an AWS account with the Cohesity Cloud Protection Service, you need to run the CloudFormation Template on the AWS console. Ensure the IAM user you use has the following permissions to run the CloudFormation Template and to create and view the stack:

Ensure to add these permissions manually.

  • cloudformation:CreateChangeSet

  • cloudformation:CreateStack

  • cloudformation:CreateUploadBucket

  • cloudformation:DeleteStack

  • cloudformation:DescribeStackEvents

  • cloudformation:DescribeStackResources

  • cloudformation:DescribeStacks

  • cloudformation:GetTemplate

  • cloudformation:GetTemplateSummary

  • cloudformation:ListStackResources

  • cloudformation:ListStacks

  • cloudformation:UpdateStack

  • iam:AddRoleToInstanceProfile

  • iam:AttachRolePolicy

  • iam:CreateInstanceProfile

  • iam:CreateRole

  • iam:DeleteInstanceProfile

  • iam:DeleteRole

  • iam:DeleteRolePolicy

  • iam:DetachRolePolicy

  • iam:GetInstanceProfile

  • iam:GetRole

  • iam:GetRolePolicy

  • iam:PassRole

  • iam:PutRolePolicy

  • iam:RemoveRoleFromInstanceProfile

  • iam:TagRole

  • lambda:AddPermission

  • lambda:CreateFunction

  • lambda:DeleteFunction

  • lambda:InvokeFunction

  • lambda:RemovePermission

  • s3:CreateBucket

  • s3:GetObject

  • s3:ListBucket

  • s3:PutObject

  • s3: PutBucketPublicAccessBlock

Permissions for DynamoDB Data Protection

You do not need to add these permissions manually, as they are automatically added when you run the CFT.

Resource

Permissions

Reason
IAM iam:PassRole  
 

kms:CreateGrant

kms:DescribeKey

kms:Decrypt

kms:Encrypt

kms:ListAliases

kms:ListKeys

KMS permissions are needed to read data of an encrypted database at the time of backup, as well as write encrypted data to the recovered database. Described permissions are needed for listing and identifying keys associated with database instances.
 

dynamodb:BatchWriteItem

dynamodb:DeleteItem

dynamodb:GetItem

dynamodb:PutItem

dynamodb:Query

dynamodb:RestoreTableToPointInTime

dynamodb:Scan

dynamodb:UpdateItem

dynamodb:CreateTable

dynamodb:UpdateTable

dynamodb:DescribeContinuousBackups

dynamodb:DescribeExport

dynamodb:DescribeImport

dynamodb:DescribeTable

dynamodb:ExportTableToPointInTime

dynamodb:ImportTable

dynamodb:ListTables

dynamodb:ListTagsOfResource

dynamodb:TagResource

dynamodb:UpdateContinuousBackups

These permissions are required for backing up and recovering Amazon DynamoDB tables.
 

s3:CreateBucket

s3:GetBucketLocation

s3:PutBucketTagging

s3:DeleteBucket

s3:AbortMultipartUpload

s3:DeleteObject

s3:GetBucketVersioning

s3:GetObject

s3:GetObjectTagging

s3:GetObjectVersion

s3:ListBucket

s3:ListBucketMultipartUploads

s3:ListMultipartUploadParts

s3:PutObject

s3:PutObjectTagging

 
 

glue:CreateJob

glue:TagResource

glue:DeleteJob

glue:StartJobRun

glue:GetJobRun

 
 

logs:DescribeLogGroups

logs:CreateLogGroup

logs:CreateLogStream

logs:DescribeLogStreams

logs:GetLogEvents

logs:PutLogEvents

 

*If you want to use a KMS key belonging to a different AWS account, then perform the steps described in the AWS documentation.

Considerations

Review and understand the following limitations and known issues before protecting Amazon DynamoDB tables:

  • General Protection Limitations

    • Tables in Amazon DynamoDB can be protected across all regions in your AWS account.

    • During recovery, you can restore Amazon DynamoDB tables to their original region. However, the restore operation fails if another table with the same name already exists in that region.

    • To restore a table using its original name, you must first manually delete the existing table. Then, perform the recovery without specifying any prefix or suffix for the table name.

  • Restore Method Behavior and Priority

    When a restore is initiated, Cohesity attempts recovery using the AWS Point-in-Time Recovery (PITR) method first. If PITR is unavailable, Cohesity falls back to the snapshot-based restore method.

    Capabilities and limitations differ between the two methods:

    • PITR Restore

      • Supports restoring both Local Secondary Indexes (LSIs) and Global Secondary Indexes (GSIs) within the 35-day PITR window.

      • Restore is supported only to the original AWS account where the backups were created.

      • Cross-region and cross-account restores are not supported using PITR.

    • Snapshot-Based Restore

      • Does not support restoring Local Secondary Indexes (LSIs).

      • Cross-region and cross-account restores are supported.

      • Used automatically when PITR is unavailable.

  • Global Tables

    • Global tables are recovered as local tables.

    • After restore, you must manually reconfigure the table as a global table.

    • This behavior applies only to EVENTUAL CONSISTENCY Global Tables.

    • Backup strategy: Perform the backup from any one of the regions participating in the global table.

    • Restore strategy: Restore the table to the desired region, then manually configure the global table.

  • Index Restore Considerations

    • Tables with Global Secondary Indexes (GSIs) may take longer to restore because indexes are recreated during recovery.

    • Restore of Local Secondary Indexes (LSIs) is not supported when using snapshot-based protection. This limitation applies only to snapshot restores and not to PITR restores. This is an AWS consideration for importing DynamoDB tables from Amazon S3.

  • Large Table Backup and Restore Considerations

    For DynamoDB tables larger than 2.5 TB:

    • The default Max task DPUs per account must be increased in the AWS region where the AWS Glue job runs.

    • The increase is required on:

      • The AWS side (AWS Glue DPU quota)

      • The Cohesity side (cluster G-flag configuration)

    Contact Cohesity Support for assistance with increasing the DPU limits on both the AWS and Cohesity sides.

    For Large Restores (15 TB or Larger)

    • AWS does not natively support restores of 15 TB or larger.

    • Before attempting a restore of this scale, you must contact AWS Support to request an increase to the import size limit.

  • AWS Charges

    For protected DynamoDB tables, the following AWS charges may apply:

    • AWS Glue job costs: For data transformation and movement during backup or recovery.

    • Export table costs: For exporting table data to S3.

    • Egress costs: For data transferred out of AWS.

  • Point-in-Time Recovery (PITR) Considerations

    • Cohesity enables PITR for Amazon DynamoDB tables, allowing restoration to any specific point within the past 35 days.

    • PITR is available only when restoring to the original AWS account.

    • After unprotecting a DynamoDB table, you must manually disable PITR to avoid unnecessary retention and associated AWS costs.

    • Manually turning off PITR after a full backup breaks the backup chain. Subsequent incremental backups cannot run until a new full backup is completed.

  • DynamoDB Version Limitation

    • Restoring a backup taken from a higher DynamoDB version to a lower version is not supported.

  • Cross-Region and Cross-Account Restore Summary

    Restore Method

    Same Region

    Cross Region Cross Account
    PITR Supported Not Supported Not Supported
    Snapshot Supported Supported Supported