github.com/cloud-green/juju@v0.0.0-20151002100041-a00291338d3d/provider/ec2/instancetype.go (about)

     1  // Copyright 2013 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package ec2
     5  
     6  import (
     7  	"gopkg.in/amz.v3/aws"
     8  
     9  	"github.com/juju/juju/environs/instances"
    10  	"github.com/juju/utils/arch"
    11  )
    12  
    13  var (
    14  	// Type of virtualisation used.
    15  	paravirtual = "pv"
    16  	hvm         = "hvm"
    17  
    18  	// all instance types can run amd64 images, and some can also run
    19  	// i386 ones.
    20  	amd64 = []string{arch.AMD64}
    21  	both  = []string{arch.AMD64, arch.I386}
    22  )
    23  
    24  // allRegions is defined here to allow tests to override the content.
    25  var allRegions = aws.Regions
    26  
    27  // allInstanceTypes holds the relevant attributes of every known
    28  // instance type.
    29  //
    30  // Note that while the EC2 root disk default is 8G, constraints on
    31  // disk for amazon will simply cause the root disk to grow to match
    32  // the constraint
    33  var allInstanceTypes = []instances.InstanceType{
    34  	{ // General purpose, 1st generation.
    35  		Name:     "m1.small",
    36  		Arches:   both,
    37  		CpuCores: 1,
    38  		CpuPower: instances.CpuPower(100),
    39  		Mem:      1740,
    40  		VirtType: &paravirtual,
    41  	}, {
    42  		Name:     "m1.medium",
    43  		Arches:   both,
    44  		CpuCores: 1,
    45  		CpuPower: instances.CpuPower(200),
    46  		Mem:      3840,
    47  		VirtType: &paravirtual,
    48  	}, {
    49  		Name:     "m1.large",
    50  		Arches:   amd64,
    51  		CpuCores: 2,
    52  		CpuPower: instances.CpuPower(400),
    53  		Mem:      7680,
    54  		VirtType: &paravirtual,
    55  	}, {
    56  		Name:     "m1.xlarge",
    57  		Arches:   amd64,
    58  		CpuCores: 4,
    59  		CpuPower: instances.CpuPower(800),
    60  		Mem:      15360,
    61  		VirtType: &paravirtual,
    62  	},
    63  	// M4 instances are the latest generation of General Purpose
    64  	// Instances. This family provides a balance of compute, memory,
    65  	// and network resources, and it is a good choice for many
    66  	// applications.
    67  	{
    68  		Name:     "m4.large",
    69  		Arches:   amd64,
    70  		CpuCores: 2,
    71  		CpuPower: instances.CpuPower(650),
    72  		Mem:      8192,
    73  		VirtType: &hvm,
    74  	},
    75  	{
    76  		Name:     "m4.xlarge",
    77  		Arches:   amd64,
    78  		CpuCores: 4,
    79  		CpuPower: instances.CpuPower(1300),
    80  		Mem:      16384,
    81  		VirtType: &hvm,
    82  	},
    83  	{
    84  		Name:     "m4.2xlarge",
    85  		Arches:   amd64,
    86  		CpuCores: 8,
    87  		CpuPower: instances.CpuPower(2600),
    88  		Mem:      32768,
    89  		VirtType: &hvm,
    90  	},
    91  	{
    92  		Name:     "m4.4xlarge",
    93  		Arches:   amd64,
    94  		CpuCores: 16,
    95  		CpuPower: instances.CpuPower(5350),
    96  		Mem:      65536,
    97  		VirtType: &hvm,
    98  	},
    99  	{
   100  		Name:     "m4.10xlarge",
   101  		Arches:   amd64,
   102  		CpuCores: 40,
   103  		CpuPower: instances.CpuPower(12450),
   104  		Mem:      163840,
   105  		VirtType: &hvm,
   106  	},
   107  
   108  	{ // General purpose, 2nd generation.
   109  		Name:     "m3.medium",
   110  		Arches:   amd64,
   111  		CpuCores: 1,
   112  		CpuPower: instances.CpuPower(300),
   113  		Mem:      3840,
   114  		VirtType: &paravirtual,
   115  	}, {
   116  		Name:     "m3.large",
   117  		Arches:   amd64,
   118  		CpuCores: 2,
   119  		CpuPower: instances.CpuPower(650),
   120  		Mem:      7680,
   121  		VirtType: &paravirtual,
   122  	}, {
   123  		Name:     "m3.xlarge",
   124  		Arches:   amd64,
   125  		CpuCores: 4,
   126  		CpuPower: instances.CpuPower(1300),
   127  		Mem:      15360,
   128  		VirtType: &paravirtual,
   129  	}, {
   130  		Name:     "m3.2xlarge",
   131  		Arches:   amd64,
   132  		CpuCores: 8,
   133  		CpuPower: instances.CpuPower(2600),
   134  		Mem:      30720,
   135  		VirtType: &paravirtual,
   136  	},
   137  
   138  	{ // Compute-optimized, 1st generation.
   139  		Name:     "c1.medium",
   140  		Arches:   both,
   141  		CpuCores: 2,
   142  		CpuPower: instances.CpuPower(500),
   143  		Mem:      1740,
   144  		VirtType: &paravirtual,
   145  	}, {
   146  		Name:     "c1.xlarge",
   147  		Arches:   amd64,
   148  		CpuCores: 8,
   149  		CpuPower: instances.CpuPower(2000),
   150  		Mem:      7168,
   151  		VirtType: &paravirtual,
   152  	}, {
   153  		Name:     "cc2.8xlarge",
   154  		Arches:   amd64,
   155  		CpuCores: 16,
   156  		CpuPower: instances.CpuPower(8800),
   157  		Mem:      61952,
   158  		VirtType: &hvm,
   159  	},
   160  
   161  	{ // Compute-optimized, 2nd generation.
   162  		Name:     "c3.large",
   163  		Arches:   amd64,
   164  		CpuCores: 2,
   165  		CpuPower: instances.CpuPower(700),
   166  		Mem:      3840,
   167  		VirtType: &paravirtual,
   168  	}, {
   169  		Name:     "c3.xlarge",
   170  		Arches:   amd64,
   171  		CpuCores: 4,
   172  		CpuPower: instances.CpuPower(1400),
   173  		Mem:      7680,
   174  		VirtType: &paravirtual,
   175  	}, {
   176  		Name:     "c3.2xlarge",
   177  		Arches:   amd64,
   178  		CpuCores: 8,
   179  		CpuPower: instances.CpuPower(2800),
   180  		Mem:      15360,
   181  		VirtType: &paravirtual,
   182  	}, {
   183  		Name:     "c3.4xlarge",
   184  		Arches:   amd64,
   185  		CpuCores: 16,
   186  		CpuPower: instances.CpuPower(5500),
   187  		Mem:      30720,
   188  		VirtType: &paravirtual,
   189  	}, {
   190  		Name:     "c3.8xlarge",
   191  		Arches:   amd64,
   192  		CpuCores: 32,
   193  		CpuPower: instances.CpuPower(10800),
   194  		Mem:      61440,
   195  		VirtType: &paravirtual,
   196  	},
   197  
   198  	{ // GPU instances, 1st generation.
   199  		Name:     "cg1.4xlarge",
   200  		Arches:   amd64,
   201  		CpuCores: 8,
   202  		CpuPower: instances.CpuPower(3350),
   203  		Mem:      22528,
   204  		VirtType: &hvm,
   205  	},
   206  
   207  	{ // GPU instances, 2nd generation.
   208  		Name:     "g2.2xlarge",
   209  		Arches:   amd64,
   210  		CpuCores: 8,
   211  		CpuPower: instances.CpuPower(2600),
   212  		Mem:      15360,
   213  		VirtType: &hvm,
   214  	},
   215  
   216  	{ // Memory-optimized, 1st generation.
   217  		Name:     "m2.xlarge",
   218  		Arches:   amd64,
   219  		CpuCores: 2,
   220  		CpuPower: instances.CpuPower(650),
   221  		Mem:      17408,
   222  		VirtType: &paravirtual,
   223  	}, {
   224  		Name:     "m2.2xlarge",
   225  		Arches:   amd64,
   226  		CpuCores: 4,
   227  		CpuPower: instances.CpuPower(1300),
   228  		Mem:      34816,
   229  		VirtType: &paravirtual,
   230  	}, {
   231  		Name:     "m2.4xlarge",
   232  		Arches:   amd64,
   233  		CpuCores: 8,
   234  		CpuPower: instances.CpuPower(2600),
   235  		Mem:      69632,
   236  		VirtType: &paravirtual,
   237  	}, {
   238  		Name:     "cr1.8xlarge",
   239  		Arches:   amd64,
   240  		CpuCores: 16,
   241  		CpuPower: instances.CpuPower(8800),
   242  		Mem:      249856,
   243  		VirtType: &hvm,
   244  	},
   245  
   246  	{ // Memory-optimized, 2nd generation.
   247  		Name:     "r3.large",
   248  		Arches:   amd64,
   249  		CpuCores: 2,
   250  		CpuPower: instances.CpuPower(650),
   251  		Mem:      15616,
   252  		VirtType: &hvm,
   253  	}, {
   254  		Name:     "r3.xlarge",
   255  		Arches:   amd64,
   256  		CpuCores: 4,
   257  		CpuPower: instances.CpuPower(1300),
   258  		Mem:      31232,
   259  		VirtType: &hvm,
   260  	}, {
   261  		Name:     "r3.2xlarge",
   262  		Arches:   amd64,
   263  		CpuCores: 8,
   264  		CpuPower: instances.CpuPower(2600),
   265  		Mem:      62464,
   266  		VirtType: &hvm,
   267  	}, {
   268  		Name:     "r3.4xlarge",
   269  		Arches:   amd64,
   270  		CpuCores: 16,
   271  		CpuPower: instances.CpuPower(5200),
   272  		Mem:      124928,
   273  		VirtType: &hvm,
   274  	}, {
   275  		Name:     "r3.8xlarge",
   276  		Arches:   amd64,
   277  		CpuCores: 32,
   278  		CpuPower: instances.CpuPower(10400),
   279  		Mem:      249856,
   280  		VirtType: &hvm,
   281  	},
   282  
   283  	{ // Storage-optimized, 1st generation.
   284  		Name:     "hi1.4xlarge",
   285  		Arches:   amd64,
   286  		CpuCores: 16,
   287  		CpuPower: instances.CpuPower(3500),
   288  		Mem:      61952,
   289  		VirtType: &paravirtual,
   290  	},
   291  
   292  	{ // Storage-optimized, 2nd generation.
   293  		Name:     "i2.xlarge",
   294  		Arches:   amd64,
   295  		CpuCores: 4,
   296  		CpuPower: instances.CpuPower(1400),
   297  		Mem:      31232,
   298  		VirtType: &hvm,
   299  	}, {
   300  		Name:     "i2.2xlarge",
   301  		Arches:   amd64,
   302  		CpuCores: 8,
   303  		CpuPower: instances.CpuPower(2700),
   304  		Mem:      62464,
   305  		VirtType: &hvm,
   306  	}, {
   307  		Name:     "i2.4xlarge",
   308  		Arches:   amd64,
   309  		CpuCores: 16,
   310  		CpuPower: instances.CpuPower(5300),
   311  		Mem:      124928,
   312  		VirtType: &hvm,
   313  	}, {
   314  		Name:     "i2.8xlarge",
   315  		Arches:   amd64,
   316  		CpuCores: 32,
   317  		CpuPower: instances.CpuPower(10400),
   318  		Mem:      249856,
   319  		VirtType: &hvm,
   320  	}, {
   321  		Name:     "hs1.8xlarge",
   322  		Arches:   amd64,
   323  		CpuCores: 16,
   324  		CpuPower: instances.CpuPower(3500),
   325  		Mem:      119808,
   326  		VirtType: &paravirtual,
   327  	},
   328  
   329  	{ // Tiny-weeny.
   330  		Name:     "t1.micro",
   331  		Arches:   both,
   332  		CpuCores: 1,
   333  		// Burstable baseline is 20%
   334  		CpuPower: instances.CpuPower(20),
   335  		Mem:      613,
   336  		VirtType: &paravirtual,
   337  	},
   338  
   339  	{ // General Purpose, 3rd generation.
   340  		Name:     "t2.micro",
   341  		Arches:   amd64,
   342  		CpuCores: 1,
   343  		Mem:      1024,
   344  		// Burstable baseline is 10% (from http://aws.amazon.com/ec2/faqs/#burst)
   345  		CpuPower: instances.CpuPower(10),
   346  		VirtType: &hvm,
   347  	},
   348  	{ // General Purpose, 3rd generation.
   349  		Name:     "t2.small",
   350  		Arches:   amd64,
   351  		CpuCores: 1,
   352  		Mem:      2048,
   353  		// Burstable baseline is 20% (from http://aws.amazon.com/ec2/faqs/#burst)
   354  		CpuPower: instances.CpuPower(20),
   355  		VirtType: &hvm,
   356  	},
   357  	{ // General Purpose, 3rd generation.
   358  		Name:     "t2.medium",
   359  		Arches:   amd64,
   360  		CpuCores: 2,
   361  		Mem:      4096,
   362  		// Burstable baseline is 40% (from http://aws.amazon.com/ec2/faqs/#burst)
   363  		CpuPower: instances.CpuPower(40),
   364  		VirtType: &hvm,
   365  	},
   366  
   367  	{ // Compute-optimized, 3rd generation.
   368  		Name:     "c4.large",
   369  		Arches:   amd64,
   370  		CpuCores: 2,
   371  		Mem:      3840,
   372  		CpuPower: instances.CpuPower(800),
   373  		VirtType: &hvm,
   374  	}, {
   375  		Name:     "c4.xlarge",
   376  		Arches:   amd64,
   377  		CpuCores: 4,
   378  		Mem:      7680,
   379  		CpuPower: instances.CpuPower(1600),
   380  		VirtType: &hvm,
   381  	}, {
   382  		Name:     "c4.2xlarge",
   383  		Arches:   amd64,
   384  		CpuCores: 8,
   385  		Mem:      15360,
   386  		CpuPower: instances.CpuPower(3100),
   387  		VirtType: &hvm,
   388  	}, {
   389  		Name:     "c4.4xlarge",
   390  		Arches:   amd64,
   391  		CpuCores: 16,
   392  		Mem:      30720,
   393  		CpuPower: instances.CpuPower(6200),
   394  		VirtType: &hvm,
   395  	}, {
   396  		Name:   "c4.8xlarge",
   397  		Arches: amd64,
   398  		// The source of this information at http://aws.amazon.com/ec2/instance-types/
   399  		CpuCores: 36,
   400  		Mem:      61440,
   401  		CpuPower: instances.CpuPower(13200),
   402  		VirtType: &hvm,
   403  	},
   404  }
   405  
   406  type instanceTypeCost map[string]uint64
   407  type regionCosts map[string]instanceTypeCost
   408  
   409  // allRegionCosts holds the cost in USDe-3/hour for each available instance
   410  // type in each region.
   411  var allRegionCosts = regionCosts{
   412  	"ap-northeast-1": { // Tokyo.
   413  		"m1.small":  61,
   414  		"m1.medium": 122,
   415  		"m1.large":  243,
   416  		"m1.xlarge": 486,
   417  
   418  		"m3.medium":  101,
   419  		"m3.large":   203,
   420  		"m3.xlarge":  405,
   421  		"m3.2xlarge": 810,
   422  
   423  		"c1.medium": 158,
   424  		"c1.xlarge": 632,
   425  
   426  		"cc2.8xlarge": 2349,
   427  
   428  		"c3.large":   128,
   429  		"c3.xlarge":  255,
   430  		"c3.2xlarge": 511,
   431  		"c3.4xlarge": 1021,
   432  		"c3.8xlarge": 2043,
   433  
   434  		"g2.2xlarge": 898,
   435  
   436  		"m2.xlarge":  287,
   437  		"m2.2xlarge": 575,
   438  		"m2.4xlarge": 1150,
   439  
   440  		"cr1.8xlarge": 4105,
   441  
   442  		"r3.large":   210,
   443  		"r3.xlarge":  420,
   444  		"r3.2xlarge": 840,
   445  		"r3.4xlarge": 1680,
   446  		"r3.8xlarge": 3360,
   447  
   448  		"hi1.4xlarge": 3276,
   449  
   450  		"i2.xlarge":  1001,
   451  		"i2.2xlarge": 2001,
   452  		"i2.4xlarge": 4002,
   453  		"i2.8xlarge": 8004,
   454  
   455  		"hs1.8xlarge": 5400,
   456  
   457  		"t1.micro": 26,
   458  
   459  		"t2.micro":  20,
   460  		"t2.small":  40,
   461  		"t2.medium": 80,
   462  
   463  		"c4.large":   147,
   464  		"c4.xlarge":  294,
   465  		"c4.2xlarge": 588,
   466  		"c4.4xlarge": 1176,
   467  		"c4.8xlarge": 2352,
   468  	},
   469  	"ap-southeast-1": { // Singapore.
   470  		"m1.small":  58,
   471  		"m1.medium": 117,
   472  		"m1.large":  233,
   473  		"m1.xlarge": 467,
   474  
   475  		"m3.medium":  98,
   476  		"m3.large":   196,
   477  		"m3.xlarge":  392,
   478  		"m3.2xlarge": 784,
   479  
   480  		"c1.medium": 164,
   481  		"c1.xlarge": 655,
   482  
   483  		"c3.large":   132,
   484  		"c3.xlarge":  265,
   485  		"c3.2xlarge": 529,
   486  		"c3.4xlarge": 1058,
   487  		"c3.8xlarge": 2117,
   488  
   489  		"m2.xlarge":  296,
   490  		"m2.2xlarge": 592,
   491  		"m2.4xlarge": 1183,
   492  
   493  		"r3.large":   210,
   494  		"r3.xlarge":  420,
   495  		"r3.2xlarge": 840,
   496  		"r3.4xlarge": 1680,
   497  		"r3.8xlarge": 3360,
   498  
   499  		"i2.xlarge":  1018,
   500  		"i2.2xlarge": 2035,
   501  		"i2.4xlarge": 4070,
   502  		"i2.8xlarge": 8140,
   503  
   504  		"hs1.8xlarge": 5570,
   505  
   506  		"t1.micro": 20,
   507  
   508  		"t2.micro":  20,
   509  		"t2.small":  40,
   510  		"t2.medium": 80,
   511  
   512  		"c4.large":   152,
   513  		"c4.xlarge":  304,
   514  		"c4.2xlarge": 608,
   515  		"c4.4xlarge": 1216,
   516  		"c4.8xlarge": 2432,
   517  
   518  		"g2.2xlarge": 1000,
   519  	},
   520  	"ap-southeast-2": { // Sydney.
   521  		"m1.small":  58,
   522  		"m1.medium": 117,
   523  		"m1.large":  233,
   524  		"m1.xlarge": 467,
   525  
   526  		"m3.medium":  98,
   527  		"m3.large":   196,
   528  		"m3.xlarge":  392,
   529  		"m3.2xlarge": 784,
   530  
   531  		"c1.medium": 164,
   532  		"c1.xlarge": 655,
   533  
   534  		"c3.large":   132,
   535  		"c3.xlarge":  265,
   536  		"c3.2xlarge": 529,
   537  		"c3.4xlarge": 1058,
   538  		"c3.8xlarge": 2117,
   539  
   540  		"m2.xlarge":  296,
   541  		"m2.2xlarge": 592,
   542  		"m2.4xlarge": 1183,
   543  
   544  		"r3.large":   210,
   545  		"r3.xlarge":  420,
   546  		"r3.2xlarge": 840,
   547  		"r3.4xlarge": 1680,
   548  		"r3.8xlarge": 3360,
   549  
   550  		"i2.xlarge":  1018,
   551  		"i2.2xlarge": 2035,
   552  		"i2.4xlarge": 4070,
   553  		"i2.8xlarge": 8140,
   554  
   555  		"hs1.8xlarge": 5570,
   556  
   557  		"t1.micro": 20,
   558  
   559  		"t2.micro":  20,
   560  		"t2.small":  40,
   561  		"t2.medium": 80,
   562  
   563  		"c4.large":   152,
   564  		"c4.xlarge":  304,
   565  		"c4.2xlarge": 608,
   566  		"c4.4xlarge": 1216,
   567  		"c4.8xlarge": 2432,
   568  
   569  		"g2.2xlarge": 898,
   570  	},
   571  	"eu-west-1": { // Ireland.
   572  		"m1.small":  47,
   573  		"m1.medium": 95,
   574  		"m1.large":  190,
   575  		"m1.xlarge": 379,
   576  
   577  		"m3.medium":  77,
   578  		"m3.large":   154,
   579  		"m3.xlarge":  308,
   580  		"m3.2xlarge": 616,
   581  
   582  		"c1.medium": 148,
   583  		"c1.xlarge": 592,
   584  
   585  		"cc2.8xlarge": 2250,
   586  
   587  		"c3.large":   120,
   588  		"c3.xlarge":  239,
   589  		"c3.2xlarge": 478,
   590  		"c3.4xlarge": 956,
   591  		"c3.8xlarge": 1912,
   592  
   593  		"cg1.4xlarge": 2360,
   594  
   595  		"g2.2xlarge": 702,
   596  
   597  		"m2.xlarge":  275,
   598  		"m2.2xlarge": 550,
   599  		"m2.4xlarge": 1100,
   600  
   601  		"cr1.8xlarge": 3750,
   602  
   603  		"r3.large":   195,
   604  		"r3.xlarge":  390,
   605  		"r3.2xlarge": 780,
   606  		"r3.4xlarge": 1560,
   607  		"r3.8xlarge": 3120,
   608  
   609  		"hi1.4xlarge": 3100,
   610  
   611  		"i2.xlarge":  938,
   612  		"i2.2xlarge": 1876,
   613  		"i2.4xlarge": 3751,
   614  		"i2.8xlarge": 7502,
   615  
   616  		"hs1.8xlarge": 4900,
   617  
   618  		"t1.micro": 20,
   619  
   620  		"t2.micro":  14,
   621  		"t2.small":  28,
   622  		"t2.medium": 56,
   623  
   624  		"c4.large":   132,
   625  		"c4.xlarge":  264,
   626  		"c4.2xlarge": 528,
   627  		"c4.4xlarge": 1056,
   628  		"c4.8xlarge": 2112,
   629  	},
   630  	"sa-east-1": { // Sao Paulo.
   631  		"m1.small":  58,
   632  		"m1.medium": 117,
   633  		"m1.large":  233,
   634  		"m1.xlarge": 467,
   635  
   636  		"m3.medium":  95,
   637  		"m3.large":   190,
   638  		"m3.xlarge":  381,
   639  		"m3.2xlarge": 761,
   640  
   641  		"c1.medium": 179,
   642  		"c1.xlarge": 718,
   643  
   644  		"m2.xlarge":  323,
   645  		"m2.2xlarge": 645,
   646  		"m2.4xlarge": 1291,
   647  
   648  		"t1.micro": 27,
   649  
   650  		"t2.micro":  27,
   651  		"t2.small":  54,
   652  		"t2.medium": 108,
   653  
   654  		"c3.large":   163,
   655  		"c3.xlarge":  325,
   656  		"c3.2xlarge": 650,
   657  		"c3.4xlarge": 1300,
   658  		"c3.8xlarge": 2600,
   659  	},
   660  	"us-east-1": { // Northern Virginia.
   661  		"m1.small":  44,
   662  		"m1.medium": 87,
   663  		"m1.large":  175,
   664  		"m1.xlarge": 350,
   665  
   666  		"m3.medium":  70,
   667  		"m3.large":   140,
   668  		"m3.xlarge":  280,
   669  		"m3.2xlarge": 560,
   670  
   671  		"c1.medium": 130,
   672  		"c1.xlarge": 520,
   673  
   674  		"cc2.8xlarge": 2000,
   675  
   676  		"c3.large":   105,
   677  		"c3.xlarge":  210,
   678  		"c3.2xlarge": 420,
   679  		"c3.4xlarge": 840,
   680  		"c3.8xlarge": 1680,
   681  
   682  		"cg1.4xlarge": 2100,
   683  
   684  		"g2.2xlarge": 650,
   685  
   686  		"m2.xlarge":  245,
   687  		"m2.2xlarge": 490,
   688  		"m2.4xlarge": 980,
   689  
   690  		"cr1.8xlarge": 3500,
   691  
   692  		"r3.large":   175,
   693  		"r3.xlarge":  350,
   694  		"r3.2xlarge": 700,
   695  		"r3.4xlarge": 1400,
   696  		"r3.8xlarge": 2800,
   697  
   698  		"hi1.4xlarge": 3100,
   699  
   700  		"i2.xlarge":  853,
   701  		"i2.2xlarge": 1705,
   702  		"i2.4xlarge": 3410,
   703  		"i2.8xlarge": 6820,
   704  
   705  		"hs1.8xlarge": 4600,
   706  
   707  		"t1.micro": 20,
   708  
   709  		"t2.micro":  13,
   710  		"t2.small":  26,
   711  		"t2.medium": 52,
   712  
   713  		"c4.large":   116,
   714  		"c4.xlarge":  232,
   715  		"c4.2xlarge": 464,
   716  		"c4.4xlarge": 928,
   717  		"c4.8xlarge": 1856,
   718  	},
   719  	"us-west-1": { // Northern California.
   720  		"m1.small":  47,
   721  		"m1.medium": 95,
   722  		"m1.large":  190,
   723  		"m1.xlarge": 379,
   724  
   725  		"m3.medium":  77,
   726  		"m3.large":   154,
   727  		"m3.xlarge":  308,
   728  		"m3.2xlarge": 616,
   729  
   730  		"c1.medium": 148,
   731  		"c1.xlarge": 592,
   732  
   733  		"c3.large":   120,
   734  		"c3.xlarge":  239,
   735  		"c3.2xlarge": 478,
   736  		"c3.4xlarge": 956,
   737  		"c3.8xlarge": 1912,
   738  
   739  		"g2.2xlarge": 702,
   740  
   741  		"m2.xlarge":  275,
   742  		"m2.2xlarge": 550,
   743  		"m2.4xlarge": 1100,
   744  
   745  		"r3.large":   195,
   746  		"r3.xlarge":  390,
   747  		"r3.2xlarge": 780,
   748  		"r3.4xlarge": 1560,
   749  		"r3.8xlarge": 3120,
   750  
   751  		"i2.xlarge":  938,
   752  		"i2.2xlarge": 1876,
   753  		"i2.4xlarge": 3751,
   754  		"i2.8xlarge": 7502,
   755  
   756  		"t1.micro": 25,
   757  
   758  		"t2.micro":  17,
   759  		"t2.small":  34,
   760  		"t2.medium": 68,
   761  
   762  		"c4.large":   138,
   763  		"c4.xlarge":  276,
   764  		"c4.2xlarge": 552,
   765  		"c4.4xlarge": 1104,
   766  		"c4.8xlarge": 2208,
   767  	},
   768  	"us-west-2": { // Oregon.
   769  		"m1.small":  44,
   770  		"m1.medium": 87,
   771  		"m1.large":  175,
   772  		"m1.xlarge": 350,
   773  
   774  		"m3.medium":  70,
   775  		"m3.large":   140,
   776  		"m3.xlarge":  280,
   777  		"m3.2xlarge": 560,
   778  
   779  		"c1.medium": 130,
   780  		"c1.xlarge": 520,
   781  
   782  		"cc2.8xlarge": 2000,
   783  
   784  		"c3.large":   105,
   785  		"c3.xlarge":  210,
   786  		"c3.2xlarge": 420,
   787  		"c3.4xlarge": 840,
   788  		"c3.8xlarge": 1680,
   789  
   790  		"g2.2xlarge": 650,
   791  
   792  		"m2.xlarge":   245,
   793  		"m2.2xlarge":  490,
   794  		"m2.4xlarge":  980,
   795  		"cr1.8xlarge": 3500,
   796  
   797  		"r3.large":   175,
   798  		"r3.xlarge":  350,
   799  		"r3.2xlarge": 700,
   800  		"r3.4xlarge": 1400,
   801  		"r3.8xlarge": 2800,
   802  
   803  		"hi1.4xlarge": 3100,
   804  
   805  		"i2.xlarge":  853,
   806  		"i2.2xlarge": 1705,
   807  		"i2.4xlarge": 3410,
   808  		"i2.8xlarge": 6820,
   809  
   810  		"hs1.8xlarge": 4600,
   811  
   812  		"t1.micro": 20,
   813  
   814  		"t2.micro":  13,
   815  		"t2.small":  26,
   816  		"t2.medium": 52,
   817  
   818  		"c4.large":   116,
   819  		"c4.xlarge":  232,
   820  		"c4.2xlarge": 464,
   821  		"c4.4xlarge": 928,
   822  		"c4.8xlarge": 1856,
   823  	},
   824  	"eu-central-1": { // Frankfurt.
   825  		"t2.micro":  15,
   826  		"t2.small":  30,
   827  		"t2.medium": 60,
   828  
   829  		"m3.medium":  83,
   830  		"m3.large":   166,
   831  		"m3.xlarge":  332,
   832  		"m3.2xlarge": 665,
   833  
   834  		"c3.large":   129,
   835  		"c3.xlarge":  258,
   836  		"c3.2xlarge": 516,
   837  		"c3.4xlarge": 1032,
   838  		"c3.8xlarge": 2064,
   839  
   840  		"r3.large":   210,
   841  		"r3.xlarge":  421,
   842  		"r3.2xlarge": 842,
   843  		"r3.4xlarge": 1684,
   844  		"r3.8xlarge": 3369,
   845  
   846  		"i2.xlarge":  1013,
   847  		"i2.2xlarge": 2026,
   848  		"i2.4xlarge": 4051,
   849  		"i2.8xlarge": 8102,
   850  	},
   851  	"us-gov-west-1": { // Isolated region - US GovCloud.
   852  		"t2.micro":  15,
   853  		"t2.small":  31,
   854  		"t2.medium": 62,
   855  
   856  		"m3.medium":  84,
   857  		"m3.large":   168,
   858  		"m3.xlarge":  336,
   859  		"m3.2xlarge": 672,
   860  
   861  		"c3.large":   126,
   862  		"c3.xlarge":  252,
   863  		"c3.2xlarge": 504,
   864  		"c3.4xlarge": 1008,
   865  		"c3.8xlarge": 2016,
   866  
   867  		"r3.large":   210,
   868  		"r3.xlarge":  420,
   869  		"r3.2xlarge": 840,
   870  		"r3.4xlarge": 1680,
   871  		"r3.8xlarge": 3360,
   872  
   873  		"i2.xlarge":  1023,
   874  		"i2.2xlarge": 2046,
   875  		"i2.4xlarge": 4092,
   876  		"i2.8xlarge": 8184,
   877  
   878  		"hs1.8xlarge": 5520,
   879  	},
   880  	"cn-north-1": { // Isolated region - China, Beijing.
   881  		// Instance type information is from
   882  		// http://www.amazonaws.cn/en/ec2/details/
   883  		// TODO (anastasiamac 2015-03-05):
   884  		// To compensate for lack of pricing, we
   885  		// are putting in arbitrary values that reflect the relative costs.
   886  		// This is justified by the fact that, in Juju, we use instance-by-region cost
   887  		// to identify least expensive machine with desired constraints.
   888  		"t1.micro": 1,
   889  
   890  		"m1.small": 2,
   891  
   892  		"m3.medium":  3,
   893  		"m3.large":   5,
   894  		"m3.xlarge":  7,
   895  		"m3.2xlarge": 9,
   896  
   897  		"c3.large":   4,
   898  		"c3.xlarge":  6,
   899  		"c3.2xlarge": 8,
   900  		"c3.4xlarge": 10,
   901  		"c3.8xlarge": 11,
   902  	},
   903  }