AWS EC2 billing API : Reserved host pricing not available - amazon-ec2

I downloaded the EC2 pricing csv file using the url https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonEC2/current/index.csv . It is not listing the pricing for reserved hosts . example , if I want to check pricing for m3 : dedictaed host with 3 year reservation, it does not have the price listed .
Any input .

Firstly, some definitions:
There is no such thing as a Reserved Host.
A Dedicated Host is a physical host computer that is charged per-hour. You pay for the whole host immediately, and can then launch individual instances (for free) onto the host.
A Reserved Instance is a pricing discount.
The pricing file you linked contained the following lines for:
Region: us-east-1
Term: Reserved
Instance Type: m3.xlarge (you must select a single instance type for the whole host)
Tenancy: Dedicated
Pre-installed software (eg SQL Server): None
If using All Upfront pricing, there is no hourly fee.
If using Partial Upfront pricing, there is a an upfront fee plus a discounted hourly fee.
Update:
Singapore partial-upfront m4 Linux dedicated hosts:
Yes, this indeed does not correlate with the pricing page, which merely shows a price for "m4". It does not match m4.10xlarge nor m4.16xlarge.
You should contact AWS Customer Service for clarification on the costs.

The best way to check how much things will cost in AWS is using the Simple Monthly Calculator
For the actual costs of your infrastructure I would suggest digesting the CUR report from AWS, which contains on which instance your RI was applied, how many hours, dedicated servers, etc.
Check the documentation: http://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/billing-reports-costusage.html

Related

Heroku: How does the postgreSQL Pricing work & how to limit it?

I've a site that is hosted in Heroku. It is an Ecommerce site that uploads user's designs (JPG, PNG, PSD files or AI files, PDFs, etc) but this are stored in Amazon and not heroku.
Right now I'm trying to get my costs down, so I'm checking the resources and I see this:
As you can see I've a Heroku Postgress Addon Standard 0 that costs $50 monthly.
I'm trying to bring the Heroku Postgress Addon cost down.
According to this Heroku Page, there are Postgres Plans at $9.
However it has a Row Limit and offers no Storage Capacity.
How this could affect my app?
How do I change to this plan?
heroku pg:info
=== DATABASE_URL, HEROKU_POSTGRESQL_GOLD_URL
Plan: Standard 0
Status: Available
Data Size: 18.3 MB
Tables: 26
PG Version: 10.7
Connections: 8/120
Connection Pooling: Available
Credentials: 1
Fork/Follow: Available
Rollback: earliest from 2019-04-30 19:23 UTC
Created: 2019-03-05 16:08 UTC
Region: us
Data Encryption: In Use
Continuous Protection: On
Maintenance: not required
Maintenance window: Fridays 18:30 to 22:30 UTC
Add-on: postgresql-polished-46417
=== HEROKU_POSTGRESQL_BROWN_URL
Plan: Hobby-dev
Status: Available
Connections: 0/20
PG Version: 10.6
Created: 2019-02-14 17:19 UTC
Data Size: 7.6 MB
Tables: 0
Rows: 0/10000 (In compliance)
Fork/Follow: Unsupported
Rollback: Unsupported
Continuous Protection: Off
Add-on: postgresql-opaque-83191
Billing:
In my Billing acount I'm seeing that for march and april I'm beeing charged more than $50 USD.
How can I limit this, to lets say $20 USD monthly?
** We're only expecting 100 visits top!**
However, according to this medium post visits is not a metric for which we're beeing charged. I just mentioned the 100 visits top as a reference.
The free plan limits to 10k rows, correct, and once you've reached that limit, your inserts will start to fail. Been there.
It's really just as it's written. 10k rows, no storage limits. You could have a text column with a huge json or file in there and it wouldn't matter in storage, as long as it is under the row count limit.
You would be affected only when having to upgrade it to a bigger plan, say the 9$ which would give you 1M rows, as it's not an upgrade of your database but a migration to a new database, which you'd have to perform.
So in order to migrate you would have to put your app in maintenance mode, add the 9$ database, make it 'follow' your free database, wait a couple minutes as the 9$ database updates itself with the free database data, then make the 9$ database stop following the free database and lastly switch your app to the new 9$ database.
This last step, if you're using the DATABASE_URL environment variable is transparent for the app. Just detach the free database and attach the 9$ database, take your app out of maintenance mode and you're done.
If you can have an hour or two of downtime, it's worth the savings. You can script this migration as it only uses heroku commands.
Another easy way to have a free and reliable database is to use AWS. Since heroku is inside AWS you just have to setup an RDS in the same region as your app is and switch the connection. Then you would have a free 30gb database for a year.

Hosts File for Greenplum Installation

I am setting up greenplum 3 node cluster for POC while checking installation steps I found that hostfile_exkeys file have to be in master node.
Can anyone tell me where I should create this file location, node etc?
And most important what to put in this?
You create hostfile_exkeys on the Master. It isn't needed on the other hosts. You can put it in /home/gpadmin or anywhere that is convenient for you.
You put the three hostnames for your POC in this file. Example:
mdw
sdw1
sdw2
This is documented pretty well here: https://gpdb.docs.pivotal.io/5120/install_guide/prep_os_install_gpdb.html
You can also run a POC in the cloud. Greenplum is available in AWS, Azure, and GCP. It does all of the configuration for you. You can even use the BYOL product listings for 90 days for free to evaluate the product or you can use the Hourly billed products to get support while you evaluate the product.
There are examples in the utililty reference for gpssh-exkeys documentation but, in general, you should put in all the hostnames in your cluster. If there a multiple network-interfaces, those can go in instead.
I generally put this file either in /home/gpadmin or /home/gpadmin/gpconfigs (good place to keep all files for initial setup and initialization).
Your file will look something like (one name per line):
mdw
sdw1
sdw2
If there are 2 network interfaces, it might look something like:
mdw
mdw-1
mdw-2
sdw1
sdw1-1
sdw1-2
sdw2
sdw2-1
sdw2-2
Your /etc/hosts file (on all server) should include the IP addresses for all the interfaces and their names, so this file should match those names listed in /etc/hosts.
This is primarily to allow the master to exchange ssh keys with all hosts so it is always password-less login to the hosts. After you have this file set up, you will run (example):
gpssh-exkeys -f /home/gpadmin/gpconfigs/yourhostfilename
I hope this helps.

AWS IAM control of a group of EC2 instances

We are using IAM permissions for groups and users with great success for S3, SQS, Redshift, etc. The IAM for S3 in particular gives lovely level of details by path and bucket.
I am bumping into some head scratching when it comes to EC2 permissions.
How do I create a permission that allows an IAM user to:
create up to n instances
do whatever he/she wants on those instances only (terminate / stop / describe)
...and makes it impossible for him/her to affect our other instances (change termination / terminate / etc.) ?
I've been trying Conditions on tag ("Condition": {"StringEquals": {"ec2:ResourceTag/purpose": "test"}}), but that means that all of our tools need to be modified to add that tag at creation time.
Is there a simpler way?
Limiting the number of instances an IAM user can create is not possible (unfortunately). All you have is a limit on the number of instances in the entire account.
Limiting permissions to specific instances is possible, but you have to specify the permissions for each instance-ID, using this format:
arn:aws:ec2:region:account:instance/instance-id
More information is available here:
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-iam-actions-resources.html

Microstrategy Clustering and licences

I have two registered instance of MSTG 9.3 suite, both with 10 named user licences. I have used one in testing and second in production purpose. I want to create MSTG cluster. Would I get 10+10 named user licences or I will 'lose' 10 licences?
Thanks,
Stevan
You should talk with your MicroStrategy Sales guy.
I'm not sure if you need a new licence key for the cluster or if the test user licences are cheaper than the prod ones.
If you have 20 named user licenses you should be entitle to use 20 user on multiple servers, but the licence key on the server should allow 20 named users. So for sure you need a new licence key.

Amazon EC2 license question

I would like to ask how licensing works on multiple instances? Suppose that I have an application that I bought earlier, and I have a lincese key to run it. I install this application to the basic AMI, then i enter the license key, and I boundle this instance to a new AMI. I need 5 instances from this AMI. If I run 5 instances from this AMI, then I will have 5 instances, but I have a license key for only 1 instance. So how does it work legally? I need to create 5 AMI using 5 different license key, and then create 1 instance from each AMI?
thanks for the answer
It depends on the license which governs your Operating System. Here, each instance corresponds to an installation. If your license is for installation on 2 machines, then you can use the license key to run 2 instances simultaneously. Likewise, you can run only one instance if you have a license key which is valid for one installation.
In your case, yes, you need 5 one installation licenses or one 5 installation instances to run 5 instances at the same time.
You may also want to take a look at OEM or bulk licenses if you need to run many instances.
Hope this helps.

Resources