Script for managing automated AWS EBS snapshots
APACHE-2.0 License
.. image:: https://badge.fury.io/py/automated-ebs-snapshots.svg :target: https://badge.fury.io/py/automated-ebs-snapshots .. image:: https://api.codeclimate.com/v1/badges/cbf2a51a48f04b2e0bec/maintainability :target: https://codeclimate.com/github/skymill/automated-ebs-snapshots/maintainability :alt: Maintainability
Automated EBS Snapshots helps you ensure that you have up to date snapshots of your EBS volumes.
All you need to do to get started is documented below.
::
pip install automated-ebs-snapshots
IAM Policy ^^^^^^^^^^^^^^^^^^^^
First you need to create an IAM user and give that user correct Permissions. Below is an example policy: :: { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1453988686666", "Effect": "Allow", "Action": [ "ec2:CreateSnapshot", "ec2:CreateTags", "ec2:DeleteTags", "ec2:DeleteSnapshot", "ec2:DescribeSnapshots", "ec2:DescribeVolumes" ], "Resource": [ "*" ] } ] }
Automated EBS snapshots can be configured either via command line options or using a configuration file.
Command line options ^^^^^^^^^^^^^^^^^^^^
You can use the following command line options to authenticate to AWS. ::
AWS configuration options:
--access-key-id ACCESS_KEY_ID
AWS access key
--secret-access-key SECRET_ACCESS_KEY
AWS secret access key
--region REGION AWS region
Configuration file ^^^^^^^^^^^^^^^^^^
Create a configuration file anywhere on you file system. If parameters for access-key-id and secret-access-key
are not defined, the instance's IAM role will be used instead.
::
[general]
access-key-id: xxxx
secret-access-key: xxxxxxxx
region: eu-west-1
Then use the --config
command line option to point at your configuration file.
Start watching a volume ^^^^^^^^^^^^^^^^^^^^^^^
In order to enable automatic snapshots, you need to start watching the volume.
The following command will add vol-13245678
to the watchlist with snapshots
created daily.
::
automated-ebs-snapshots --config ~/auto-ebs-snapshots.conf --watch vol-12345678 --interval daily
Add volumes to watch list ^^^^^^^^^^^^^^^^^^^^^^^^^
To add lots of volumes in one time, we can create a configuration file to define volumes(support volume id or Name tag), interval and retention. ::
vol-d9d6d6af,weekly,2 volume1,weekly,4 volume2,daily,0
Then run the following command ::
automated-ebs-snapshots --config ~/auto-ebs-snapshots.conf --watch-file volumes.conf
List watched volumes ^^^^^^^^^^^^^^^^^^^^
List the currently watched volumes and their backup interval ::
automated-ebs-snapshots --config ~/automated-ebs-snapshots.conf --list
Stop watching a volume ^^^^^^^^^^^^^^^^^^^^^^
To stop creating automated backups for a volume, run this: ::
automated-ebs-snapshots --config ~/automated-ebs-snapshots.conf --unwatch vol-12345678
Remove volumes from watch list ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
To remove all volumes in the configuration file, just run: ::
automated-ebs-snapshots --config ~/auto-ebs-snapshots.conf --unwatch-file volumes.conf
List snapshots for a volume ^^^^^^^^^^^^^^^^^^^^^^^^^^^
List all snapshots for the given volume id or volume name ::
automated-ebs-snapshots --config ~/automated-ebs-snapshots.conf --snapshots vol-d9d6d6af
Now, to start taking snapshots you will need to have Automated EBS Snapshots running. You can either run automated-ebs-snapshots
manually (i.e. scheduled in crontab or such) or have it running in daemon mode.
Manual execution
^^^^^^^^^^^^^^^^
Running automated-ebs-snapshots
manually:
::
automated-ebs-snapshots --config ~/automated-ebs-snapshots.conf --run
It will check if there are any volumes with no or too old snapshots. New snapshots will be created if needed.
Force run
^^^^^^^^^
It's possible to force run the command by using the --force-run
parameter:
::
automated-ebs-snapshots --config ~/automated-ebs-snapshots.conf --force-run
Daemon mode ^^^^^^^^^^^ Start the daemon by running ::
automated-ebs-snapshots --config ~/automated-ebs-snapshots.conf --daemon start
Stop the daemon with ::
automated-ebs-snapshots --config ~/automated-ebs-snapshots.conf --daemon stop
You can also restart it using ::
automated-ebs-snapshots --config ~/automated-ebs-snapshots.conf --daemon restart
0.6.1 ^^^^^
--force-run
(#40 <https://github.com/skymill/automated-ebs-snapshots/pull/40>
). Fixes #39 <https://github.com/skymill/automated-ebs-snapshots/pull/39>
0.6.0 ^^^^^
--force-run
flag (#27 <https://github.com/skymill/automated-ebs-snapshots/pull/27>
). Fixes #23 <https://github.com/skymill/automated-ebs-snapshots/pull/23>
#37 <https://github.com/skymill/automated-ebs-snapshots/pull/37>
). Fixes #36 <https://github.com/skymill/automated-ebs-snapshots/pull/36>
0.5.0 ^^^^^
#33 <https://github.com/skymill/automated-ebs-snapshots/pull/33>
__)0.4.1 ^^^^^
#19 <https://github.com/skymill/automated-ebs-snapshots/pull/19>
). Thanks @robaman <https://github.com/robaman>
for the pull request0.4.0 ^^^^^
#13 <https://github.com/skymill/automated-ebs-snapshots/issues/13>
). Thanks @yumminhuang <https://github.com/yumminhuang>
for the pull requestName
in addition to volume-id
(#13 <https://github.com/skymill/automated-ebs-snapshots/issues/13>
). Thanks @yumminhuang <https://github.com/yumminhuang>
for the pull request0.3.2 ^^^^^
#7 <https://github.com/skymill/automated-ebs-snapshots/issues/7>
__)0.3.1 ^^^^^
#6 <https://github.com/skymill/automated-ebs-snapshots/issues/6>
__)0.3.0 ^^^^^
#3 <https://github.com/skymill/automated-ebs-snapshots/issues/3>
__)#5 <https://github.com/skymill/automated-ebs-snapshots/issues/5>
__)#2 <https://github.com/skymill/automated-ebs-snapshots/issues/2>
__)This project is maintained by Sebastian Dahlgren <http://www.sebastiandahlgren.se>
__ and it is supported by Skymill Solutions <http://www.skymillsolutions.com>
__.
APACHE LICENSE 2.0 Copyright 2014 Skymill Solutions
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0 <http://www.apache.org/licenses/LICENSE-2.0>
__
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.