Amazon Web Services recently came out with a new feature called “Run Command”. If you have instances in AWS it allows you to send a set of commands to a subset (or all) of your instances, with the ability for extended logging of the output sent to an S3 bucket, if you wish.
People will sometimes use tools such as Puppet to send a new system configuration that may only be a single command, such as a systemctl enable command. But the AWS Run Command will let you do this without having to create a Puppet module for a small set of commands.
- amazon-ssm-agent must be running.
- Security groups must be configured to allow this agent
AWS Identity and Access Management has a default SSM Policy which you can apply to your instances if you just search for it in IAM:
After you have applied the AmazonEC2RoleforSSM you need to get the amazon-ssm-agent service running. You can bake this into whichever AMI baking tool you are using, or configuration management (Chef, Puppet etc). But to test you can set it up like this for Linux instances upon creation or in a script run by your configuration management software:
curl https://amazon-ssm-<your-region>.s3.amazonaws.com/latest/linux_amd64/amazon-ssm-agent.rpm -o amazon-ssm-agent.rpm
yum -y install amazon-ssm-agent.rpm
Start the service for CentOS 7.x using:
sudo systemctl start amazon-ssm-agent
For CentOS 6.x use:
service start amazon-ssm-agent
Once amazon-ssm-agent is running, then you can issue commands to your instances. Here’s the basics on how to do it:
In AWS Console –> EC2 –> Commands
Then select the type of Command you wish to run, for example a simple Shell Script:
You can then choose to send the full output of your commands to an S3 bucket:
Once the command is run you can view the output by clicking “View result”:
The AWS Run Command is extremely powerful for one-off commands to be run without the overhead and delay of a configuration management tool. The amazon-ssm-agent takes a little extra time to set up, but once you have it started you can utilize the Run Command at no cost other than minimal cross-region traffic costs.