| career | career progression - Graham Barker
5 Best AWS Developer Tools
Despite increased competition, AWS has continued its stronghold on the cloud market. However, that doesn't mean AWS is resting on its laurels, far from it. New services are constantly added, resulting in improved performance. And while AWS tries to keep things simple for developers, using the platform isn't always easy. Especially when it's often being updated.
For this reason, AWS provides a variety of tools to help AWS developers utilize and develop with its cloud platform and services. Let's take a look at five such tools that can help you build applications with AWS — and hone your development skills.
AWS Command Line Interface
This AWS Command Line Interface, or AWS CLI, is completely free to use. AWSCLI allows configuration of a wide variety of AWS services from the command line. Installing AWSCLI is simple, simply download the correct version for your operating system and run the installer. This tool is supported for all modern versions of Windows, Mac and Linux and it's installed by default on all Amazon Linux AMIs.
The core benefits of AWSCLI include:
- Linux shells such as bash, zsh, and tcsh fully supported
- Windows PowerShell and Command Prompt both supported
- Commands can be run remotely on EC2 instances through remote terminals including PuTTY
- AWS IaaS, administration and management functions are available via AWSCLI within 180 days of the service launching
- The CLI commands are often much simpler to use than native APIs
Taking the last point about simplistic commands, AWS provides the example of copying a local file to an S3 bucket:
$ aws s3 cp myvideo.mp4 s3://mybucket/
It really doesn't get much simpler than that, in fact, it's basically the same command you would run to copy files between directories on a local machine.
If you are a security-conscious developer, then you will be glad to know that the AWS CLI tool is open source. The full code and further usage examples can be found on the AWS GitHub page
Codebuild is a managed continuous integration service, provided by AWS which manages code builds and testing for your applications.
With CodeBuild, gone are the days of setting up build servers and managing that layer of infrastructure. Codebuild also scales rapidly inline with the number of builds required, removing code building bottlenecks, while being flexible enough to integrate with the AWS services that your application is built upon.
Key benefits of AWS CodeBuild are:
- Build code fast with auto-scaling code building infrastructure.
- Remove code building bottlenecks
- Pay for the build time used, no cost for idle deploy systems
- Bring your own build environments or use a preconfigured, out of the box system
- Jenkins and other 3rd party integration
The evolution of CodeBuild means you can focus more on code — and less on time-consuming and Kill-prone build systems. This is great for business, too, because it promotes good code while still focusing on the importance of builds and testing. But without the overheads.
CodeBuild is rather intuitive for any developer to use:
- First, create a build project, which defines how a build is processed. Here, you specify where the source code is, the build commands, and a build output location. The build project contains a build specification which contains key build information.
- Next, CodeBuild will download the source code with aspects of the build project (build specifications)
- While the build runs, all output is stored in an AWS S3 bucket for ease of access. Within your build specification, you can configure notifications to an AWS SNS, which can link into your operations cycles. Build information is sent to CodeBuild and AWS CloudWatch for logging purposes.
- Upon completion, your code will be built as per your criteria and available form the location you specified in the build project.
Getting started with AWS CodeBuild is easy. Plus, AWS has a full step-by-step guide to get you up and running in no time.
Cloud9 isn't just a basic IDE, though. As you would expect from any modern IDE, it includes code hinting and code completion. It also has a debugger with a browser-based shell for installing software, using git, or executing commands.
Cloud9 takes a modern approach to what an IDE should do, including features like:
- Code together: The ability for multiple developers to work on the same IDE at the same time
- Built-in chat: Communicate directly with other team members without additional software to install and configure
- All the usual AWS SDKs, libraries and plugins are preconfigured with the browser-based IDE to speed up the development of serverless applications.
- Terminal access to AWS; CLI access to AWS instances from the IDE
The aforementioned feature, terminal access is really neat; SUDO access to your EC2 instance in AWS, all pre-authenticated so that you can run AWS CLI commands as needed. Remember, this is all from a browser-based IDE with nothing to download on your machine.
AWS Device Farm
AWS Device Farm is an AWS app testing solution where you can test your app on Amazon's farm of thousands of physical devices.
It's unlikely that your organization has a 2,500-strong felt of physical mobile devices at hand. With AWS Device Farm you can rent time on the farm to stress test your applications before rolling them out to the app store of choice.
Device Farm tests your apps on thousands of mobile and tablet devices with the goal to significantly reduce testing time for mobile applications. This is achieved by allowing you to run automated tests on real devices, configure physical devices and app settings prior to testing, and providing you with detailed reports, screenshots, and logs.
To use Device Farm, there are five straightforward steps:
- Upload your app binary to AWS Device Farm
- Configure Tests. If you don't have a testing suite, you can use the built-in Fuzz test suite
- Select Devices, Operating Systems, and Carrier
- Configure the device states. Set device GPS location, installed apps, and connectivity options
- Run the tests
You are presented with a wealth of testing information such as screenshots from the physical devices and pass/failure statues for each device option.
With all of this functionality, you might be thinking that the costs will be high. But pricing is either $0.17 per device minute, or you can opt into the unlimited testing option for $250 per month per slot. A slot is essentially a number of concurrent tests, but be sure to check the AWS Device Farm pricing page for the most up-to-date information.
You would think that the name says it all. Yes, AWS CodeDeploy helps you deploy code, but in reality, it's far more than that. CodeDeploy manages the entire code deployment lifecycle so you don't have to.
- With AWS CodeDeploy you can fully automate software deploys, running your app across dev, test and production environments
- EC2, Fargate, Lambda and on-prem servers are all supported
- Launching and Managing deployments can be achieved through the AWS Management Console or AWS CLI
- Downtime is minimized since changes are deployed incrementally and health of deployed apps is tracked
- There is no new language to learn to use CodeDeploy and it works with any application with integration support for Jenkins, GitHub and CorePipeline
CodeDeploy has such an impressive feature set and integration with industry-leading systems including GitHub and Jenkins. With this in mind, it makes perfect sense to add CodeDeploy to your developer toolkit for a seamless code deploy experience.
There are many tools that help make the most out of your AWS investment. They are aimed at speeding up development and making your job as a developer easier.
For the AWS CLI tool, we can run one-liners or full scripts against dozens of AWS services. AWS commits to keeping the AWS CLI tool functional with all new services within just a few months of their release.
Leveraging the scalable AWS cloud to enhance your development experience is also a huge benefit. AWS CodeBuild, Code Deploy and Device Farm are perfect examples of helpful development tools which do this and ultimately help improve your agile development processes.
The best part about AWS developer tools is that you can use one, two, or all of them depending on your application and business processes.