-
Notifications
You must be signed in to change notification settings - Fork 3
/
index.html
133 lines (115 loc) · 6.64 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<!doctype html>
<html ng-app>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<title>Unofficial Amazon AWS Glacier Calculator</title>
<link rel="stylesheet" href="stylesheets/styles.css">
<link rel="stylesheet" href="stylesheets/pygment_trac.css">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
<div class="wrapper">
<header>
<h1>Amazon Glacier Cost-Estimator</h1>
<p>An unofficial, hacked-together cost-estimator for Amazon Glacier.</p>
<p class="view"><a href="https://github.com/brandt/amazon-glacier-calc">View the Project on GitHub<br>
<small>brandt/amazon-glacier-calc</small></a></p>
<h3>Assumptions</h3>
<p>
<ol>
<li>One month equals 30 days.</li>
<li>Request costs ($0.05 per 1000) are not included.</li>
<li>Amount of data stored is also the average amount for that month.</li>
<li>Data transfer rate beyond 350 TB is priced at the 350 TB tier.</li>
<li>You are making 1 retrieval job request that takes Amazon 4 hours to fulfull.</li>
</ol>
</p>
</header>
<section ng-controller="GlacierCalculatorCtrl">
<h3>The Missing Amazon Glacier Cost-Estimator Calculator.</h3>
<p>Amazon has't yet provided us with a cost calculator for their new archival storage service, <a href="http://aws.amazon.com/glacier/">Glacier</a>, and figuring out how their <a href="http://aws.amazon.com/glacier/faqs/">pricing model</a> translates to real-world use isn't exactly straightforward.</p>
<p>Sometimes the best way to understand something complicated is to interact with it.</p>
<p>This tool helps elucidate the relationship between cost, data retention periods, and recovery scenarios. (See disclaimer below.)</p>
<h3>Select your region</h3>
<p>
<input type="radio" ng-model="region" value="us-east" ng-change="calculate()"/>US East (N. Virginia)<br/>
<input type="radio" ng-model="region" value="us-west-1" ng-change="calculate()"/>US West (Oregon)<br/>
<input type="radio" ng-model="region" value="us-west-2" ng-change="calculate()"/>US West (N. California)<br/>
<input type="radio" ng-model="region" value="europe" ng-change="calculate()"/>EU (Ireland)<br/>
<input type="radio" ng-model="region" value="asia" ng-change="calculate()"/>Asia (Tokyo)
</p>
<h3>Storage</h3>
<p>
<label>Amount of data stored</label><input type="text" ng-model="storedDataInput" ng-change="calculate()"/>
<select ng-model="storedDataUnits" ng-options="u.value as u.name for u in units" ng-change="calculate()"></select><br>
<label>Duration data was kept</label><input type="text" ng-model="storedDuration" ng-change="calculate()"/> days
</p>
<h3>Early deletion</h3>
<p>
<label>Amount of data to be deleted</label><input type="text" ng-model="deletedDataInput" ng-change="calculate()"/>
<select ng-model="deletedDataUnits" ng-options="u.value as u.name for u in units" ng-change="calculate()"></select><br>
<label>Duration data was kept</label><input type="text" ng-model="deletedDuration" ng-change="calculate()"/> days
</p>
<h3>Retrieval</h3>
<p>
<label>Amount of data to be retrieved</label><input type="text" ng-model="retrieveDataInput" ng-change="calculate()"/>
<select ng-model="retrieveDataUnits" ng-options="u.value as u.name for u in units" ng-change="calculate()"></select>
</p>
<h2>Results</h2>
<h3>Retrieval allowance</h3>
<p>
<label>Per Month</label>{{ monthlyAllowance }}<br/>
<label>Per Day</label>{{ dailyAllowance }}<br/>
<small>Target request rate to stay within allowance:</small><br/>
<label>Per Hour</label>{{ rateAllowance }}<br/>
<small><a ng-click="showMore.RETRIEVAL=0" ng-show="showMore.RETRIEVAL == 1"> Hide explanation...</a></small>
<small><a ng-click="showMore.RETRIEVAL=1" ng-show="showMore.RETRIEVAL == 0"> Show explanation...</a></small>
</p>
<span ng-show="showMore.RETRIEVAL">
<h4>Explanation of Retrieval Allowance (as I understand it)</h4>
<p>
<ul>
<li>Allowance is 5% of your average monthly storage.</li>
<li>Average is measured from the start of the month to the time of request.</li>
<li>Allowance is pro-rated per day (UTC) which translates to about 0.17%.</li>
<li>Hourly rate only matters if you exceed your daily allowance.</li>
<li>Retrieval time is how long it takes Amazon to fulfull your request.</li>
<li>Retrieval time has nothing to do with your download speed.</li>
</ul>
</p>
</span>
<h3>Costs</h3>
<p>
<label>Storage Cost</label>{{ storageCost | currency }}<br/>
<label>Retrieval Cost</label>{{ retrievalCost | currency }}<br/>
<label>Deletion Cost</label>{{ deletionCost | currency }}<br/>
<label>Transfer Cost</label>{{ transferCost | currency }}<br/>
<span class="total-cost">
<label><b>Total Cost</b></label>{{ totalCost | currency }}
</span>
</p>
<p>Disclaimer: This tool was built on quite a few assumptions and estimations. I can't attest to its accuracy. It's neither endorsed nor affiliated with <a href="http://aws.amazon.com">Amazon AWS</a>. The rates are referenced from the <a href="http://aws.amazon.com/glacier/pricing/">Glacier pricing page</a> and <a href="http://aws.amazon.com/glacier/faqs/">Glacier FAQ</a>.</p>
</section>
<footer>
<p>
This version wascreated by <a href="https://github.com/brandt">brandt</a><br/>
Based on original work by <a href="https://www.github.com/liangzan/aws-glacier-calculator">liangzan</a>
</p>
<p>
<small>
Built with <a href="http://angularjs.org">AngularJS</a><br>
Theme by <a href="https://github.com/orderedlist">orderedlist</a><br>
Hosted on <a href="http://pages.github.com/">Github pages</a>
</small>
</p>
</footer>
</div>
<script src="javascripts/scale.fix.js"></script>
<script src="javascripts/angular-1.0.1.min.js"></script>
<script src="javascripts/main.js"></script>
</body>
</html>