AWS Lambda cost calculator webapp

AWS Lambda usage costs are a little tricky to understand, because the usage cost is per GB seconds of usage. This is calculated from the execution time of your Lambda by the GB of memory it is configured to use. For example, a single request to a Lambda configured to use 1GB that executes for 1 sec is 1 GB-sec.

AWS offers a free tier that includes the first 400,000 GB-s for free, and the first 1,000,000 requests a month for free. Above those you’re charged $0.00001667 for each GB-s and $0.20 for every 1M additions requests. Check the details here.

I put together a simple webapp that allows you to play with the numbers and see what your costs are going to look like. You can check it out (served from AWS S3) here:

 

https://s3-us-west-1.amazonaws.com/awslambdacostcalc/index.html

If you’re interested in taking a look at the source for the React app, it’s here on Github. Create me a ticket if you find any issues.

Setting up a local production Jira installation with MySQL

Download the Jira server install from here.

Follow the steps here to download and add the JDBC driver to your Jira server. Download and copy the mysql connector jar to

/opt/atlassian/jira/lib/

Chose the ‘set up myself’ option, and complete the form to point to your already installed MySQL db instance:

Configure your install properties:

On the next screen you’ll be prompted for your license key, or head over to the Atlassian site to purchase or create a trial key. When you enter your organization name (above) on the license site it will pick up your site id.

Create an admin user, continue and now you’re up and running!

Fixing npm global install permissions on MacOS

By default npm on MacOS tries to install global modules (npm install -g somemodule) to /usr/local/lib/node_modules and you get this error:

Error: EACCES: permission denied, access \'/usr/local/lib/node_modules\'

The npm docs here have a couple of steps to avoid this by telling npm to install to a location where you have have access to:

mkdir ~/.npm-global
npm config set prefix '~/.npm-global'

Edit your .profile or .bash_profile to add the new location to your PATH:

export PATH=~/.npm-global/bin:$PATH

Now you should be all set!

 

:

 

AWS CloudWatch default metrics for EC2 instances

AWS CloudWatch allows you to monitor events and logs from the services you are running. There are a set of default metrics provided, and you can also create you own custom metrics.

From a running EC2 instance, let’s look at the metrics displayed beneath your selected instance, on the Monitoring tab:

By default we get metrics displayed for:

  • CPU utilization
  • Disk reads/writes bytes and operations
  • Network in/out bytes and packets
  • Status checks failed

Now let’s create a new CloudWatch dashboard and add some metrics. Press ‘Create Dashboard’:

Next you can select a chart type, and then select from the available metrics. For EC2 there are 105 metrics to pick from:

Let’s see what options we have – you can enter filter values in the entry field. Let’s say I’m interested in disk reads/writes:

Notice the second column is by InstanceId, so if you have many instances (including it seems terminated instances which are showing in my list), make sure you pick the stats for the instance you want to monitor – here I’ve added a widget for Disk read/write bytes, and CPU utilization: