AwsSnapshotScheduler.Program.Backup C# (CSharp) Method

Backup() public static method

public static Backup ( string name, string description, string volumeid, string volumename, string instancename, string expires ) : void
name string
description string
volumeid string
volumename string
instancename string
expires string
return void
        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);
        }