Beispiel #1
0
        public static void Backup(string name, string description, string volumeid, string volumename, string instancename, string expires)
        {
            Console.WriteLine("    Creating snapshot of " + volumeid + " / " + volumename + " / " + instancename);

            AmazonEC2Client ec2 = Ec2Helper.CreateClient();

            CreateSnapshotRequest rq = new CreateSnapshotRequest();

            rq.VolumeId    = volumeid;
            rq.Description = description;

            CreateSnapshotResponse rs = ec2.CreateSnapshot(rq);

            string snapshotid = rs.Snapshot.SnapshotId;


            // build tags for snapshot

            CreateTagsRequest rqq = new CreateTagsRequest();

            rqq.Resources.Add(snapshotid);

            rqq.Tags.Add(new Tag {
                Key = "Name", Value = name
            });
            rqq.Tags.Add(new Tag {
                Key = "source", Value = "scheduler"
            });
            rqq.Tags.Add(new Tag {
                Key = "instance", Value = instancename
            });
            rqq.Tags.Add(new Tag {
                Key = "volume", Value = volumename
            });
            rqq.Tags.Add(new Tag {
                Key = "expires", Value = expires.ToString()
            });


            // get tags from volume to be applied to snapshot

            DescribeTagsRequest trq = new DescribeTagsRequest();

            trq.Filters.Add(new Filter()
            {
                Name = "resource-id", Values = new List <string>()
                {
                    volumeid
                }
            });
            DescribeTagsResponse trs = ec2.DescribeTags(trq);

            foreach (TagDescription t in trs.Tags)
            {
                if (t.Key != "nextSnapshot" && t.Key != "lastSnapshot" && t.Key != "Name")
                {
                    rqq.Tags.Add(new Tag {
                        Key = t.Key, Value = t.Value
                    });
                }
            }


            // apply tags to snapshopt

            var createTagResponse = ec2.CreateTags(rqq);
        }