{"id":17520451,"url":"https://github.com/xaf/dynamodb-bnr","last_synced_at":"2025-03-28T23:24:13.178Z","repository":{"id":145629717,"uuid":"81844670","full_name":"XaF/dynamodb-bnr","owner":"XaF","description":"dynamodb backup'n'restore python script with tarfile management","archived":false,"fork":false,"pushed_at":"2017-03-13T22:04:47.000Z","size":105,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-04-18T03:43:20.024Z","etag":null,"topics":["backup","dockerhub","dynamodb","python-script","restore","s3","tar"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/XaF.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-02-13T16:16:42.000Z","updated_at":"2024-04-18T03:43:20.025Z","dependencies_parsed_at":"2023-04-27T16:02:08.442Z","dependency_job_id":null,"html_url":"https://github.com/XaF/dynamodb-bnr","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XaF%2Fdynamodb-bnr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XaF%2Fdynamodb-bnr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XaF%2Fdynamodb-bnr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XaF%2Fdynamodb-bnr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/XaF","download_url":"https://codeload.github.com/XaF/dynamodb-bnr/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246113651,"owners_count":20725503,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backup","dockerhub","dynamodb","python-script","restore","s3","tar"],"created_at":"2024-10-20T11:04:59.708Z","updated_at":"2025-03-28T23:24:13.151Z","avatar_url":"https://github.com/XaF.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"dynamodb-bnr\n============\n\nDynamoDB backup'n'restore python script with tarfile management\n\n## Description\n\n`dynamodb-bnr`, or DynamoDB backup'n'restore, is a Python script that allows to backup and restore DynamoDB tables to and from directories or tar archives (with or without compression, supported formats are `tar`, `tar.gz` and `tar.bz2`). The backups can also be automatically sent to S3 buckets.\n\nA Dockerfile is provided to run `dynamodb-bnr` from a docker container. The `dynamodb-bnr` docker container can also be obtained [from the docker hub][dockerhub] using `docker pull bhvrops/dynamodb-bnr`\n\n## Requirements\n\n`dynamodb-bnr` requirements are currently as follow:\n  - Python 2.7 or 3.5\n  - `boto3`\n  - `pyopenssl`\n\n## AWS Errors management\n\nWhen making calls to AWS API, some errors can happen. Here is a list of the errors reported on the AWS API Reference for DynamoDB, and a description of how they are handled by `dynamodb-bnr`.\n\n### [ListTables][aws_errors:listtables]\n - **InternalServerError:** script fails and exit != 0\n\n### [CreateTable][aws_errors:createtable]\n  - **InternalServerError:** script fails and exit != 0\n  - **LimitExceededException:** wait for 15*(current_retry+1) seconds before retrying, max retry = 5 (default values), if not solved after max retry, script fails and exit != 0\n  - **ResourceInUseException:** wait for 10*(current_retry+1) seconds before retrying, max retry = 5 (default values), if not solved after max retry, script fails and exit != 0\n\n### [DeleteTable][aws_errors:deletetable]\n  - **InternalServerError:** script fails and exit != 0\n  - **LimitExceededException:** wait for 15*(current_retry+1) seconds before retrying, max retry = 5 (default values), if not solved after max retry, script fails and exit != 0\n  - **ResourceInUseException:** wait for 10*(current_retry+1) seconds before retrying, max retry = 5 (default values), if not solved after max retry, script fails and exit != 0\n  - **ResourceNotFoundException:** already deleted, ignore\n\n### [UpdateTable][aws_errors:updatetable]\n  - **InternalServerError:** script fails and exit != 0\n  - **LimitExceededException:** wait for 15*(current_retry+1) seconds before retrying, max retry = 5 (default values), if not solved after max retry, script fails and exit != 0\n  - **ResourceInUseException:** wait for 10*(current_retry+1) seconds before retrying, max retry = 5 (default values), if not solved after max retry, script fails and exit != 0\n  - **ResourceNotFoundException:** script fails and exit != 0\n\n### [DescribeTable][aws_errors:describetable]\n  - **InternalServerError:** script fails and exit != 0\n  - **ResourceNotFoundException**\n    - _for backup:_ should not happen (describe is used to get the table structure on a table that has been found with ListTables ), script fails and exit != 0\n    - _when creating table:_ should not happen (describe is used to verify that the table is not anymore in 'CREATING' mode and becomes 'ACTIVE'), script fails and exit != 0\n    - _when deleting table:_ should happen (describe is used to verify that the table is not anymore in 'DELETING' mode and becomes actually deleted), ignore\n\n### [Scan][aws_errors:scan]\n  - **InternalServerError:** script fails and exit != 0\n  - **ProvisionedThroughputExceededException:** wait for 10*(current_retry+1) seconds before retrying, max retry = 5 (default values), if not solved after max retry, script fails and exit != 0\n  - **ResourceNotFoundException:** should not happen (scan only tables found with ListTables), script fails and exit != 0\n\n### [BatchWriteItem][aws_errors:batchwriteitem]\n\n  - **InternalServerError:** script fails and exit != 0\n  - **ItemCollectionSizeLimitExceededException:** should not happen as the maximum batch write is set to the current AWS API maximum of 25, script fails and exit != 0\n  - **ProvisionedThroughputExceededException:** wait for 10*(current_retry+1) seconds before retrying, max retry = 5 (default values)\n  - **ResourceNotFoundException:** should not happen (Table is deleted and created just before running the batch write), script fails and exit != 0\n\n\n[dockerhub]: https://hub.docker.com/r/bhvrops/dynamodb-bnr/\n[aws_errors:listtables]: http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListTables.html#API_ListTables_Errors\n[aws_errors:createtable]: http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html#API_CreateTable_Errors\n[aws_errors:deletetable]: http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteTable.html#API_DeleteTable_Errors\n[aws_errors:updatetable]: https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html#API_UpdateTable_Errors\n[aws_errors:describetable]: http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeTable.html#API_DescribeTable_Errors\n[aws_errors:scan]: http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Scan.html#API_Scan_Errors\n[aws_errors:batchwriteitem]: http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchWriteItem.html#API_BatchWriteItem_Errors\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxaf%2Fdynamodb-bnr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxaf%2Fdynamodb-bnr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxaf%2Fdynamodb-bnr/lists"}