Blossom Logo Deploy your apps with Heroku-like simplicity using Blossom See Your Savings
BoltOps Logo

Aws

Category: Aws

All posts about Aws.

Serverless Slack Commands with Ruby: Fun with AWS Image Recognition header image

Serverless Slack Commands with Ruby: Fun with AWS Image Recognition

Axel Molina Axel Molina · February 02, 2021 · 11 min read
This post will detail the steps to get a serverless slack command running on AWS Lambda using the Jets Serverless Ruby framework. We’ll make something fun: a command that takes in a URL, scrapes all the images on the page, filters the images using AWS image recognition, and posts the filtered images to the current slack channel. For example:
Read more →
CloudWatch Log Tips: Jets AWS Introduction Series Part 5 header image

CloudWatch Log Tips: Jets AWS Introduction Series Part 5

Tung Nguyen Tung Nguyen · July 03, 2020 · 1 min read
In this video, we’ll go over some CloudWatch Log tips. These tips will be useful for someone new to CloudWatch logs and show you how to use CloudWatch logs effectively. The biggest tip here is to click on the “Search” button immediately after clicking on a Log Group. Don’t bother clicking on individual streams and trying to find the exact AWS Lambda function.
Read more →
CloudWatch Event Rules and AWS Lambda with Ruby on Jets header image

CloudWatch Event Rules and AWS Lambda with Ruby on Jets

Tung Nguyen Tung Nguyen · June 17, 2019 · 2 min read
In this video tutorial, we’ll cover CloudWatch Event Rules and how to connect them up to AWS Lambda Functions with Ruby on Jets. We’ll explain what CloudWatch Event Rules are. Then we’ll build a Jets project from scratch with the rule_event declaration. We’ll deploy the application and test the rule event. We’ll show you how simple it is to get started with Ruby on Jets and CloudWatch Event Rules.
Read more →
SNS Events and AWS Lambda with Ruby on Jets header image

SNS Events and AWS Lambda with Ruby on Jets

Tung Nguyen Tung Nguyen · February 27, 2019 · 1 min read
In this video tutorial, we’ll cover SNS Events and how to connect them up to AWS Lambda Functions with Ruby on Jets. We’ll explain what SNS Event are. Then we’ll build a Jets project from scratch with the sns_event declaration. We’ll deploy the application and test the SNS event. We’ll show you how simple it is to get started with Ruby on Jets and SNS Events.
Read more →
S3 Events and AWS Lambda with Ruby on Jets header image

S3 Events and AWS Lambda with Ruby on Jets

Tung Nguyen Tung Nguyen · February 22, 2019 · 2 min read
In this video tutorial, we’ll cover S3 Events and how to connect them up to AWS Lambda Functions with Ruby on Jets. We’ll explain what S3 Events are. We’ll discuss the design approach that Jets took by adding an SNS topic to the flow. Then we’ll build a Jets project from scratch with the s3_event declaration. We’ll deploy the application and test the s3 event. We’ll show you how simple it is to get started with Ruby on Jets and S3 Events.
Read more →
IoT Button Events and AWS Lambda with Ruby on Jets header image

IoT Button Events and AWS Lambda with Ruby on Jets

Tung Nguyen Tung Nguyen · February 20, 2019 · 2 min read
In this video tutorial, we’ll cover IoT Events and how to connect them up to AWS Lambda Functions with Ruby on Jets. We’ll explain what IoT Events are and then build a Jets project from scratch and add a Jets iot_event declaration. We’ll use a real physical AWS IoT Button and have the button send a text message to a phone. We’ll show you how simple it is to get started with Jets and IoT Event rules.
Read more →
Hello World Examples: Jets AWS Introduction Series Part 4 header image

Hello World Examples: Jets AWS Introduction Series Part 4

Tung Nguyen Tung Nguyen · February 11, 2019 · 1 min read
In this video, we’ll create several hello world examples with Jets code. We’ll create a simple function, controller function, and a job function. We’ll also walk through the Lambda console and test each one by invoking it. This post is a part of an introductory series for people who are new to AWS Lambda and Serverless.
Read more →
CloudWatch Event Rule: Jets AWS Introduction Series Part 3 header image

CloudWatch Event Rule: Jets AWS Introduction Series Part 3

Tung Nguyen Tung Nguyen · February 06, 2019 · 1 min read
In this video, we’ll walk through creating a CloudWatch Event Rule with the CloudWatch console. Simply getting familiar with the CloudWatch console is a really good way to learn how simple it is for those who are new to CloudWatch and are trying it out for the first time. We talk about how a Jets Job essentially creates the CloudWatch even rule for you. This post is a part of an introductory series for people who are new to CloudWatch, AWS Lambda, and Serverless.
Read more →
API Gateway: Jets AWS Introduction Series Part 2 header image

API Gateway: Jets AWS Introduction Series Part 2

Tung Nguyen Tung Nguyen · February 05, 2019 · 1 min read
In this video, we’ll walk through creating an API Gateway REST API from scratch manually. Just getting familiar with the API Gateway console is an excellent way to learn how simple it is for those who are new to API Gateway and trying it out for the first time. We talk a little bit about Jets and how config/routes.rb essentially maps to API Gateway resources, but the focus is really on API Gateway console. This simple exercise will help understand what Jets does for you. This post is a part of an introductory series for people who are new to API Gateway and Serverless.
Read more →
AWS Lambda Function: Jets AWS Introduction Series Part 1 header image

AWS Lambda Function: Jets AWS Introduction Series Part 1

Tung Nguyen Tung Nguyen · February 04, 2019 · 2 min read
In this video, we’ll walk through creating a Lambda Function with the Lambda console. Simply getting familiar with the AWS Lambda console is an excellent way to learn how simple AWS Lambda is for those who are new to AWS Lambda and trying it out for the first time. We do not talk much about Jets in this video, but this simple Lambda Console exercise will help understand what Jets does for you. This post is a part of an introductory series for people who are new to AWS Lambda and Serverless.
Read more →
Serverless Ruby Cron Jobs Tutorial: Route53 Backup header image

Serverless Ruby Cron Jobs Tutorial: Route53 Backup

Tung Nguyen Tung Nguyen · January 03, 2019 · 6 min read
A great use case for AWS Lambda is running Cron Jobs. Instead of setting up a special one-off Cron server to run a simple task, we can just run the task on serverless nowadays. In this blog post, we’ll go over how to build a simple Cron Job with Jets, the Ruby Serverless Framework. As a useful practical example, we’ll create a job that backs up route53 records. This is quite handy when if you ever need it!
Read more →
Introducing Lambda Gems: Hassle-Free Serverless Ruby header image

Introducing Lambda Gems: Hassle-Free Serverless Ruby

Tung Nguyen Tung Nguyen · January 01, 2019 · 5 min read
I created Jets, the Ruby Serverless Framework, over a year ago – way before AWS officially released Ruby Support for AWS Lambda. Although it would have been nice to have official Ruby support back then, it was all for the best because I was forced to learn a lot about AWS Lambda and Serverless in general – its strengths, weaknesses, and the challenges that one typically encounters.
Read more →
EC2 A1 Instance with AWS Graviton Processor: Easy Way to Save 40% header image

EC2 A1 Instance with AWS Graviton Processor: Easy Way to Save 40%

Tung Nguyen Tung Nguyen · December 16, 2018 · 11 min read
AWS released A1 Instance Types at re:Invent 2018. Honestly, I didn’t think much about this announcement. I would see the ads for them when logging into the AWS console, and folks seem to be excited about them. So I started digging into what this whole A1 Instance type was all about. It didn’t take long to realize why it is a big deal. The A1 Instances will mean more server choices. More choices mean more competition, which is always better for consumers. This means faster, less expensive, and even better servers for us.
Read more →
Jets Image Upload Carrierwave Tutorial: Binary Support header image

Jets Image Upload Carrierwave Tutorial: Binary Support

Tung Nguyen Tung Nguyen · December 13, 2018 · 8 min read
Jets, a Ruby Serverless Framework, makes use of API Gateway Binary Support to make uploading images and files from AWS Lambda a straightforward task. We’ll cover how to upload images or any file with Jets and Carrierwave in this tutorial guide. Note, please use Jets v1.3.1 and above for this tutorial guide as the jets new generator was updated for it. Here’s the Live Demo of this tutorial. The full source code is on Github: tongueroo/jets-example-upload.
Read more →
Official AWS Ruby Support for Jets Serverless Framework header image

Official AWS Ruby Support for Jets Serverless Framework

Tung Nguyen Tung Nguyen · December 12, 2018 · 6 min read
Ever since AWS released official Ruby support for AWS Lambda on Nov 29 at re:Invent, I’ve been super excited about switching Jets over to the official AWS version of Ruby. Happy to say that Jets is now on the official AWS Ruby runtime. Knew it was going to be interesting to learn about AWS Lambda Custom Runtimes and Lambda Layers as part of this Jets update.
Read more →
Jets Tutorial: jets delete header image

Jets Tutorial: jets delete

Tung Nguyen Tung Nguyen · November 12, 2018 · 2 min read
This video tutorial demos the jets delete command. Since all the infrastructure is codified, deleting a Jets application is a straightforward process. What’s more interesting is that it is also easy to recreate the entire environment. jets delete For more info on the jets delete command, refer to its CLI reference.
Read more →
Rails on AWS Lambda: jets import:rails --submodule header image

Rails on AWS Lambda: jets import:rails --submodule

Tung Nguyen Tung Nguyen · November 09, 2018 · 2 min read
Update 12/21/2018: An improved way to run Rails on AWS Lambda is now supported that is effortless. This blog post covers it: Jets Afterburner: Serverless Rails on AWS Lambda in 5 Minutes. It is also documented here: Jets Rails Support. It is recommended you use Jets Afterburner for simple cases. In the previous post: Jets Mega Mode: Run Rails on AWS Lambda, I covered how to get Rails running on AWS Lambda with Jets. In this video tutorial, I show you how to use the --submodule option for the same command we used to set things up previously: jets import:rails. Example: jets import:rails http://github.com/tongueroo/demo-rails.git --submodule Importing the Rails application as a submodule allows you to keep the Rails project in a separate repo. This allows you to manage the Rails project with a separate history and sync it with a Jets project when you want to. This is a useful setup if you are testing Jets Mega Mode Rails Support for an extended period of time.
Read more →
Jets Mega Mode: Run Rails on AWS Lambda header image

Jets Mega Mode: Run Rails on AWS Lambda

Tung Nguyen Tung Nguyen · November 03, 2018 · 10 min read
Update 12/21/2018: An improved way to run Rails on AWS Lambda is now supported that is effortless. This blog post covers it: Jets Afterburner: Serverless Rails on AWS Lambda in 5 Minutes. It is also documented here: Jets Rails Support. It is recommended you use Jets Afterburner for simple cases. Jets allows you to run Rails applications on AWS Lambda via Mega Mode. The name reminds me of a few things: Mega Monolith: Rails applications can sometimes become a Majestic Monolith. Or sometimes it just becomes a Monolith 😁 Power Rangers Mega Mode: The Power Rangers can combine their Zords. Mega Man: This superhero can change his arm to use different special weapons. One of the things that makes him Mega Man. Mega Mode combines a Jets app and a Rack app together to allow you to run Rails on AWS Lambda with little effort. The docs for Rails Support are on the Ruby On Jets site. Here’s a Live Mega Mode Demo. We’ll go through an example of Mega Mode and get a Rails application running on AWS Lambda in this post.
Read more →
Jets Simple AWS Lambda Ruby Function header image

Jets Simple AWS Lambda Ruby Function

Tung Nguyen Tung Nguyen · October 26, 2018 · 2 min read
Jets supports writing simple AWS Lambda functions with Ruby. You define them in the app/functions folder. A function looks like this: app/functions/simple.rb: def lambda_handler(event:, context:) puts "hello world" end
Read more →
Continuous Compliance: AWS Config Rules Introduction header image

Continuous Compliance: AWS Config Rules Introduction

Tung Nguyen Tung Nguyen · September 28, 2018 · 3 min read
AWS is one of the greatest things since sliced bread. It empowers engineers to get things done quickly by enabling them to take control of the steering wheel and drive. With a simple AWS account, engineers can create resources, update security groups, and deploy their applications in rapid-fire fashion. The ease and power of AWS might make it seem like a security nightmare, but it’s actually the opposite. AWS provides the tools and controls to ensure everyone is following best practices, allows to you achieve a hardened security posture, and take compliance to a level that was never even thought possible before AWS: continuously.
Read more →
Jets Tutorial Polymorphic Support Part 9:  AWS Lambda Ruby header image

Jets Tutorial Polymorphic Support Part 9: AWS Lambda Ruby

Tung Nguyen Tung Nguyen · September 27, 2018 · 2 min read
In this video tutorial, we cover Jets Polymorphic Support Ability. Jets allows you to write Lambda functions not just in Ruby but also in other languages like Node and Python. This can be useful if you have pre-existing Lambda code. You can re-use the code and and move on with life.
Read more →
Jets Tutorial Different Environments Part 8: AWS Lambda Ruby header image

Jets Tutorial Different Environments Part 8: AWS Lambda Ruby

Tung Nguyen Tung Nguyen · September 26, 2018 · 2 min read
In this video, we continue the tutorials on the Jets Ruby Serverless Framework that adds Ruby support to AWS Lambda. We talk about the difference between Jets extra vs different environments. Different environments refer to development, staging, uat, production environments. Extra environments refer to instances of each of those environments. For example, development-1, development-2, development-3, etc.
Read more →
Toronto Serverless Presentation: Jets Framework on AWS Lambda header image

Toronto Serverless Presentation: Jets Framework on AWS Lambda

Tung Nguyen Tung Nguyen · September 25, 2018 · 2 min read
Here’s the presentation I gave at the Serverless Meetup in Toronto on Jets: A Ruby Serverless Framework. We discuss how Ruby support at native speed was achieved. We learned a bit about how AWS Lambda works under the hood to understand how it works. 2 demos with a Jets application are also provide. We deploy it to Lambda with a single command.
Read more →
Jets Tutorial Extra Environments Part 7:  AWS Lambda Ruby header image

Jets Tutorial Extra Environments Part 7: AWS Lambda Ruby

Tung Nguyen Tung Nguyen · September 13, 2018 · 2 min read
In this video, we continue the tutorials on the Jets Ruby Serverless Framework that adds Ruby support to AWS Lambda. We talk about a Jets concept called extra environments. With one environment variable JETS_ENV_EXTRA, we can create as many additional instances of environments as we wish. This helps when multiple people are asking to use the development, staging, or uat environment but cannot because it is currently used by someone else or another feature. Usually, you end up having to wait until the environment free. With this Jets concept you can create as many environments as required.
Read more →
Jets Tutorial Function Properties Part 6: AWS Lambda Ruby header image

Jets Tutorial Function Properties Part 6: AWS Lambda Ruby

Tung Nguyen Tung Nguyen · September 12, 2018 · 2 min read
In this video, we continue the tutorials on the Jets Ruby Serverless Framework that adds Ruby support to AWS Lambda. We’ll demonstrate how to customize the properties associated with the Lambda functions that Jets creates. There are 3 ways to set function properties with Jets: at the function level, class level or application level. We’ll also explore the AWS Lambda console and shows how the Lambda function properties connect with Jets.
Read more →
Jets Tutorial IAM Policies Part 5: AWS Lambda Ruby header image

Jets Tutorial IAM Policies Part 5: AWS Lambda Ruby

Tung Nguyen Tung Nguyen · September 11, 2018 · 2 min read
In this video, we continue the tutorials on the Jets Ruby Serverless Framework that adds Ruby support to AWS Lambda. We’ll demonstrate how to customize the IAM policies and roles associated with Jets Lambda functions. IAM policies are important because they handle securing access to your AWS resources so it’s worth learning them. Jets provides you with fine-grain control over the IAM permissions at the function, class, and application level.
Read more →
Jets Tutorial Background Jobs Part 4: AWS Lambda Ruby header image

Jets Tutorial Background Jobs Part 4: AWS Lambda Ruby

Tung Nguyen Tung Nguyen · September 10, 2018 · 2 min read
In this video, we continue the tutorials on the Jets Ruby Serverless Framework that adds Ruby support to AWS Lambda. We’ll cover background jobs in this video. Using background jobs is a typical pattern that offloads processing outside of the web request-response cycle. Users will not wait for web pages to load if it takes too long, so background jobs are an excellent technique to keep slower work outside of the request cycle.
Read more →
Jets Tutorial Debugging Logs Part 3: AWS Lambda Ruby header image

Jets Tutorial Debugging Logs Part 3: AWS Lambda Ruby

Tung Nguyen Tung Nguyen · September 09, 2018 · 2 min read
In this video, we continue the tutorials on the Jets Ruby Serverless Framework that adds Ruby support to AWS Lambda. We’ll cover something that is pretty important to know as a software developer: debugging. With Jets it’s pretty straightforward to look at the debugging logs both locally and remotely. Locally, the logs show up with the local running server. Remotely, the logs show up in CloudWatch Logs: available both on the AWS CloudWatch Logs console and the AWS Lambda console.
Read more →
Jets Tutorial Deploy to AWS Lambda Part 2: AWS Lambda Ruby header image

Jets Tutorial Deploy to AWS Lambda Part 2: AWS Lambda Ruby

Tung Nguyen Tung Nguyen · September 08, 2018 · 2 min read
In this video tutorial, we continue how to get to started with the Jets Ruby Serverless Framework that adds Ruby support to AWS Lambda. We’ll explore the AWS Lambda Console and API Gateway to show how the AWS resources map back to Jets application code.
Read more →
Jets Tutorial An Introductory CRUD App Part 1: AWS Lambda Ruby header image

Jets Tutorial An Introductory CRUD App Part 1: AWS Lambda Ruby

Tung Nguyen Tung Nguyen · September 07, 2018 · 2 min read
In this video tutorial, we cover how get to started with the Jets Ruby Serverless Framework that adds Ruby support to AWS Lambda. We’ll build the quintessential CRUD application, and more we’ll importantly explore and edit it to understand how it works. Here’s the link to the Live CRUD Demo.
Read more →
AWS Lambda Ruby Support at Native Speed with Jets header image

AWS Lambda Ruby Support at Native Speed with Jets

Tung Nguyen Tung Nguyen · September 02, 2018 · 5 min read
Update 2018/12/12: Official Ruby Support was announced at AWS re:Invent 2018 on Nov 29! Jets has switched over to it: Official AWS Ruby Support for Jets 🎉. This article is now out-of-date and kept around only for posterity. AWS Lambda does not yet support Ruby. Though there are plenty of rumors that AWS is working on it. I’m pretty excited for the day when AWS releases official support for Ruby. Until that day arrives though, we must use a shim in order to add Ruby support to AWS Lambda. A shim is a function written in a natively AWS Lambda supported language that calls out to Ruby. Jets uses a node shim to add Ruby support to AWS Lambda. The neat thing is that Jets adds Ruby support to AWS Lambda at pretty much native speed.
Read more →
Introducing Jets: The Ruby Serverless Framework header image

Introducing Jets: The Ruby Serverless Framework

Tung Nguyen Tung Nguyen · August 18, 2018 · 9 min read
Update 2018/12/12: Official Ruby Support was announced at AWS re:Invent 2018 on Nov 29! Jets has switched over to it: Official AWS Ruby Support for Jets 🎉. This article has been updated to reflect official Ruby support, but video in the post is out-of-date and will be updated in time. Ruby on Jets is a framework that allows you to build serverless applications in a beautiful language: Ruby. It includes everything needed to build and deploy applications to AWS Lambda. I love working with Rails, Ruby and AWS; and wanted to work with something similar in the serverless world. So I built Jets. It is key to understand AWS Lambda and API Gateway to understand Jets conceptually. Jets maps your code to Lambda functions and API Gateway resources. AWS Lambda provides Functions as a Service. It allows you to upload and run functions without worrying about the underlying infrastructure. API Gateway is the routing layer for Lambda. It is used to route REST URL endpoints to Lambda functions.
Read more →
How to Find the Current AWS EC2 Spot Market Price header image

How to Find the Current AWS EC2 Spot Market Price

Tung Nguyen Tung Nguyen · July 17, 2018 · 5 min read
Have you ever wondered how to find the current market spot price for an EC2 instance? When people first hear that spot instances can save you up 50%-90%, they tend to react in disbelief. This is natural and understandable, it just sounds too good to be true. Fortunately, there are many ways to confirm that the 50%-90% spot price savings is real. This article tries to lists the many ways in one place.
Read more →
How Does AWS Spot Instance Pricing Work? header image

How Does AWS Spot Instance Pricing Work?

Tung Nguyen Tung Nguyen · July 14, 2018 · 3 min read
Spot instance pricing is a fascinating EC2 pricing model that many people have not heard of yet. It is not only interesting from the 50%-90% savings perspective, which is already huge. It is also interesting because it encourages you to think about building your system with the best practice of high availability in mind.
Read more →
On-Demand vs Reserved vs Spot AWS EC2 Pricing Comparison header image

On-Demand vs Reserved vs Spot AWS EC2 Pricing Comparison

Tung Nguyen Tung Nguyen · July 13, 2018 · 10 min read
Just like renting or leasing a house, when you pay for servers from AWS, there are many, many different options. The plethora of options is so vast that it can be overwhelming staring at them. I’m hoping to cover the pricing options in a useful way. With the options, you get exactly the same server, but you pay a different price because of the different commitment levels from either you or from AWS.
Read more →
Heroku vs ECS Fargate vs EC2 On-Demand vs EC2 Spot Pricing Comparison header image

Heroku vs ECS Fargate vs EC2 On-Demand vs EC2 Spot Pricing Comparison

Tung Nguyen Tung Nguyen · April 22, 2018 · 6 min read
Recently upgraded ufo to add support for ECS Fargate. As part of this, I had a chance to look at the pricing for Fargate. Found out that ECS Fargate’s pricing is competitive to Heroku’s offering. The pricing makes a lot of sense because they offer a similar value proposition. We do not have to manage the servers.
Read more →
AWS Step Functions Benefits and Disadvantages header image

AWS Step Functions Benefits and Disadvantages

Tung Nguyen Tung Nguyen · April 17, 2018 · 2 min read
Looking into AWS Step Functions. Here are some initial thoughts. AWS Step Functions involves translating your logic into a declarative form. In this sense, it’s like CloudFormation. For some, the change in logical constructs can be a bit daunting at first. Here are some benefits and disadvantages.
Read more →
AWS CloudFormation Declarative Infrastructure Code Tutorial header image

AWS CloudFormation Declarative Infrastructure Code Tutorial

Tung Nguyen Tung Nguyen · February 14, 2018 · 12 min read
If you are working with AWS heavily, you should look into a powerful tool called CloudFormation. Taking the time to learn CloudFormation is an investment that is easily returned to you in the form of powerful automation. In this guide, we’ll provide a gentle introduction to CloudFormation, and by the end, you’ll have the skills to start using it in your own AWS workflow.
Read more →
Best Way to Speed Up Docker Development Workflow header image

Best Way to Speed Up Docker Development Workflow

Tung Nguyen Tung Nguyen · September 25, 2017 · 3 min read
The common advice to speeding up your Docker development workflow focuses on reducing your Docker image size. At the surface, the logic makes a lot of sense. By making your Docker images smaller, you win. With smaller image sizes, there are fewer bytes to pull down and push up to the registry, thus saving you a boatload of time. Smaller images = solution. What the advice does not take into account is a precious resource: developer’s time.
Read more →
Docker Image Layers Are Like Git Commits header image

Docker Image Layers Are Like Git Commits

Tung Nguyen Tung Nguyen · September 24, 2017 · 2 min read
One way to think about Docker image layers is to think of them as git commits. While the two are technically different, this article uses this analogy to point out an interesting commonality between both of them.
Read more →
Lono Summary - Summarize CloudFormation Template header image

Lono Summary - Summarize CloudFormation Template

Tung Nguyen Tung Nguyen · September 18, 2017 · 2 min read
In the previous posts, we went over some jq tips with CloudFormation. We used jq to quickly summarize CloudFormation template parameters and resources. lono summary automates that process and makes the command short and sweet.
Read more →
Summarize CloudFormation Required Parameters with jq header image

Summarize CloudFormation Required Parameters with jq

Tung Nguyen Tung Nguyen · September 17, 2017 · 1 min read
Shortly after the last video CloudFormation Templates and jq Tips, I wanted to know what the required parameters in a CloudFormation template were. This is also an easy task with jq. I’ll show you how to use jq to quickly summarize the required and optional parameters in a CloudFormation template in this post. It’s a one-liner 😁
Read more →
Summarize CloudFormation Resources with jq Tip header image

Summarize CloudFormation Resources with jq Tip

Tung Nguyen Tung Nguyen · September 16, 2017 · 4 min read
I’ll go over a useful way to summarize CloudFormation templates resources with jq. This is useful when you are looking at a CloudFormation template and trying to understand it. We’ll download an example CloudFormation template and use run through some useful jq commands summarize the resources defined in a CloudFormation template. Note, I’ll only show the output that is useful for understanding.
Read more →
JSON to YAML One Liner header image

JSON to YAML One Liner

Tung Nguyen Tung Nguyen · September 16, 2017 · 1 min read
I don’t remember exactly where I got these one-liners from anymore. It’s been in my expander for a while. Here are useful oneliners to convert JSON to YAML and vice versa.
Read more →
Introduction to the lono import Command header image

Introduction to the lono import Command

Tung Nguyen Tung Nguyen · September 15, 2017 · 2 min read
Embarrassingly, I’ve been converting raw CloudFormation templates to lono CloudFormation templates manually. Probably one of the reasons why it’s been neglected is because this process is so simple, but it is ripe for automation. This should have been done this a long ago.
Read more →
Build Thor CLI Project in Under a Second header image

Build Thor CLI Project in Under a Second

Tung Nguyen Tung Nguyen · September 14, 2017 · 2 min read
Update 9/5/2018: The video is old and demos the older version of the tool called thor_template. The new tool is called cli-template. I’ve updated the blog post but not the video. These two tools seem pretty cool too: http://piotrmurach.github.io/tty/: Thor based also. davetron5000.github.io/methadone/: Has it’s own CLI parser. Thanks @eashman for showing me the tools. In this post, we’ll build a CLI project that is based on Thor in under a second. The cli-template tool builds a fully functional CLI command based on Thor. The commands immediately work and there are even specs.
Read more →
How To Run Migrations on AWS ECS and Other One off Tasks header image

How To Run Migrations on AWS ECS and Other One off Tasks

Tung Nguyen Tung Nguyen · September 12, 2017 · 3 min read
Once a developer came up to me and told me that he was ready to deploy, but the deploy required migrations be run. He asked me an innocent question, how should he run migrations. Embarrassingly, because we were still evolving our tooling for the new infrastructure, we did not have a process for this simple task. We came up with an ad-hoc process that was honestly pretty terrible. It went like this:
Read more →
How AWS VPC Works Intro header image

How AWS VPC Works Intro

Tung Nguyen Tung Nguyen · September 12, 2017 · 1 min read
I’ll provide a basic introduction to the mysterious VPC world. I’ll explain terms using various diagrams. We’ll also build a simple VPC network out manually to help understand VPCs.
Read more →
Gentle Introduction to How AWS ECS Works with Example Tutorial header image

Gentle Introduction to How AWS ECS Works with Example Tutorial

Tung Nguyen Tung Nguyen · September 09, 2017 · 10 min read
ECS is the AWS Docker container service that handles the orchestration and provisioning of Docker containers. This is a beginner level introduction to AWS ECS. I’ve seen some nightmare posts and some glowing reviews about the ECS service, so I knew it was going to interesting to get my hands dirty and see what ECS was all about.
Read more →
AWS ECS Terms Introduction Tutorial header image

AWS ECS Terms Introduction Tutorial

Tung Nguyen Tung Nguyen · September 08, 2017 · 2 min read
Task Definition — This a blueprint that describes how a docker container should launch. If you are already familiar with AWS, it is like a LaunchConfig except instead it is for a docker container instead of an instance. It contains settings like exposed port, docker image, CPU shares, memory requirement, the command to run and environmental variables. Task — This is a running container with the settings defined in the Task Definition. It can be thought of as an “instance” of a Task Definition. Service — Defines long-running tasks of the same Task Definition. This can be one running container or multiple running containers all using the same Task Definition. Cluster — A logic group of EC2 instances. When an instance launches the ecs-agent software on the server registers the instance to an ECS Cluster. This is easily configurable by setting the ECS_CLUSTER variable in /etc/ecs/ecs.config described here. Container Instance — This is just an EC2 instance that is part of an ECS Cluster and has docker and the ecs-agent running on it.
Read more →
BoltOps Tooling and Software Design Philosophy header image

BoltOps Tooling and Software Design Philosophy

Tung Nguyen Tung Nguyen · August 15, 2017 · 8 min read
Software is often more of an art form than it is a science. This is one of the reasons software tends to vary substantially between tools and developers. By following guidelines and design patterns though it can help keep the code consistent and clean. This allows the code to be understandable between engineers and allow them to move between tools efficiently. In this post, I’ll talk about what some of the best practices and software design patterns followed in the BoltOps tools.
Read more →
How to Customize AWS Elastic Beanstalk Environments header image

How to Customize AWS Elastic Beanstalk Environments

Tung Nguyen Tung Nguyen · July 22, 2017 · 7 min read
A common misconception is that Elastic Beanstalk is difficult to work with because it is not customizable. I fell into this trap myself when I first took a look at AWS Elastic Beanstalk. After working with AWS Elastic Beanstalk directly and looking at it more closely though, there are plenty of ways to customize Elastic Beanstalk. I’ll cover the main ways to customize AWS Elastic Beanstalk environments in this post.
Read more →
Under the Hood of AWS Elastic Beanstalk Part 1 header image

Under the Hood of AWS Elastic Beanstalk Part 1

Tung Nguyen Tung Nguyen · July 19, 2017 · 8 min read
Elastic Beanstalk, EB, is a bit of a magic box. I’d thought it would be good to poke around a little bit under the hood, see how things actually work and learn from it. Understanding just enough of how EB works is extremely helpful for debugging. For this example I’m using a “64bit Amazon Linux 2017.03 v2.7.0 running Docker 17.03.1-ce” EB solution stack.
Read more →
Speeding Up AWS Elastic Beanstalk's eb deploy header image

Speeding Up AWS Elastic Beanstalk's eb deploy

Tung Nguyen Tung Nguyen · June 29, 2017 · 10 min read
As I’ve covered in Jack and the Elastic Beanstalk, Elastic Beanstalk is a great PaaS offering from AWS that allows developers to deploy and run their applications on EC2 instances. I been tinkering with a few different ways to speed up the eb deploy command from my local machine and was able to speed it up somewhat. Though honestly I was hoping for better results. I will detailed the results to show what I learned. Note, the project and all it’s files are available on GitHub at tongueroo/hi under the docker-cache branch.
Read more →
Ufo — Easily Build Docker Images and Deploy Containers to AWS ECS header image

Ufo — Easily Build Docker Images and Deploy Containers to AWS ECS

Tung Nguyen Tung Nguyen · June 14, 2017 · 11 min read
Amazon EC2 Container Service, ECS, is an AWS service that provisions and manages Docker containers on a cluster of EC2 instances. As with most of AWS services, it is great and simply requires a little tooling wrapped around it to create a smooth flow. Ufo is a simple tool that makes building and shipping Docker containers to AWS ECS super easy.
Read more →
AutoScaling CloudFormation Template with Lono header image

AutoScaling CloudFormation Template with Lono

Tung Nguyen Tung Nguyen · May 31, 2017 · 5 min read
In the last CloudFormation post, Generating CloudFormation Templates with Lono, the stack was intentionally designed simple to allow focus on learning and understanding CloudFormation basics. The stack was not that useful in real life. Today, I’ll walk through a CloudFormation template that is practical and useful for real life use cases: an AutoScaling App Tier.
Read more →
Lono Improvements v2.1.0 header image

Lono Improvements v2.1.0

Tung Nguyen Tung Nguyen · May 23, 2017 · 5 min read
Recently, I’ve made some major improvements and updates to the lono tool. I thought it would be nice to provide a post detailing the changes for everyone.
Read more →
Generating Hundreds of CloudFormation Templates with Lono header image

Generating Hundreds of CloudFormation Templates with Lono

Tung Nguyen Tung Nguyen · May 07, 2017 · 4 min read
Writing CloudFormation templates becomes difficult to manage once you start using it heavily. Whether it is one complicated template or multiple simple templates, maintaining the templates are a decent amount of work. This post covers a tool I wrote called lono to that manages and generates CloudFormation templates.
Read more →
AWS CloudFormation dry-run with lono cfn preview header image

AWS CloudFormation dry-run with lono cfn preview

Tung Nguyen Tung Nguyen · April 23, 2017 · 3 min read
I’ve covered lono cfn in Easily Manage CloudFormation Templates with lono cfn. After learning about AWS CloudFormation Change Sets, I was decided to add a dry-run mode to the lono tool. This dry-run command simplifies the usage of change sets to a single command: lono cfn preview 😁
Read more →
Why Generate CloudFormation Templates with Lono header image

Why Generate CloudFormation Templates with Lono

Tung Nguyen Tung Nguyen · April 09, 2017 · 4 min read
Writing CloudFormation templates becomes difficult to manage once you start using it heavily. Whether it is one complicated template or multiple simple templates, maintaining the templates are a decent amount of work. This post talks about why I built a tool called lono to help manage and generate a large amount of CloudFormation templates.
Read more →
A Simple Introduction to AWS CloudFormation Part 4: Change Sets = Dry Run Mode header image

A Simple Introduction to AWS CloudFormation Part 4: Change Sets = Dry Run Mode

Tung Nguyen Tung Nguyen · April 07, 2017 · 5 min read
UPDATE 2022/8/12: Check out the improved CloudFormation Fundamentals Introductory Course. I am a big fan of AWS CloudFormation because it gives you the power to codify the infrastructure and provision it in a repeatable way. One thing that I’ve always wished that CloudFormation had was the ability to see the what changes would be applied ahead of time before hitting that update-stack button. Who wants to hit a big scary red button without knowing what is about to happen? I don’t.
Read more →
A Simple Introduction to AWS CloudFormation Part 3: Updating a Stack header image

A Simple Introduction to AWS CloudFormation Part 3: Updating a Stack

Tung Nguyen Tung Nguyen · March 24, 2017 · 3 min read
UPDATE 2022/8/12: Check out the improved CloudFormation Fundamentals Introductory Course. In the last 2 stories, we created an EC2 instance and a Route53 record successfully with CloudFormation. We have yet to walk through the useful update-stack command though. In this post, we’ll use the 2 templates created in the first 2 posts to play around with the update-stack command.
Read more →
A Simple Introduction to AWS CloudFormation Part 2: EC2 Instance and Route53 header image

A Simple Introduction to AWS CloudFormation Part 2: EC2 Instance and Route53

Tung Nguyen Tung Nguyen · March 20, 2017 · 4 min read
UPDATE 2022/8/12: Check out the improved CloudFormation Fundamentals Introductory Course. This is a continuation of A Simple Introduction to AWS CloudFormation. We will build on top of the first simple CloudFormation template from Part 1, which provisions an EC2 instance and Security Group. We will add to it a Route53 record that points to the EC2 instance’s DNS public hostname. This demonstrates CloudFormation’s ability to “orchestrates” the components of the stack. CloudFormation will wait until the EC2 instance’s DNS public hostname is ready and then create the Route53 record pointing to it.
Read more →
A Simple Introduction to AWS CloudFormation Part 1: EC2 Instance header image

A Simple Introduction to AWS CloudFormation Part 1: EC2 Instance

Tung Nguyen Tung Nguyen · March 06, 2017 · 8 min read
The easiest way to describe what CloudFormation is that it is a tool from AWS that allows you to spin up resources effortlessly. You define all the resources you want AWS to spin up in a blueprint document, click a button, and then AWS magically creates it all. This blueprint is called a template in CloudFormation speak.
Read more →
Blossom Logo
Deploy Your Apps with Ease

Blossom lets you deploy to your own servers with Heroku-like simplicity. Connect any cloud provider and we'll handle the rest. Save time and money with Blossom.

BoltOps Blog
Join a group of good-looking folks who get free email updates from BoltOps.