Custom sets of IAM permission to create Amazon EC2 resources and perform tasks using the Amazon API/CLI.
User Guide
IAM policies for Amazon EC2 (actions, ARN, condition keys) can be foundĀ on this page:
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-for-amazon-ec2.html
Custom IAM Policies
Backup Script
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:Describe*", "ec2:CreateSnapshot", "ec2:DeleteSnapshot", "ec2:CreateTags", "ec2:DescribeSnapshots" ], "Resource": "*" }] }
Automation of Jenkins Slaves
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:Describe*", "ec2:AssociateAddress", "ec2:StartInstances", "ec2:StopInstances" ], "Resource": "*" }] }
Start/Stop Specific Instances
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:StopInstances", "ec2:StartInstances" ], "Resource": "arn:aws:ec2:eu-west-1:12345678900000:instance/i-10fd3456", "Resource": "arn:aws:ec2:eu-west-1:12345678900000:instance/i-12fd3458" }] }
Read Only EC2, Route53 and S3, plus GetConsoleOutput for Troubleshooting VM Startups
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:Describe*", "ec2:GetConsoleOutput", "route53:Get*", "route53:List*", "s3:Get*", "s3:List*" ], "Resource": "*" }] }
AMI Launch Script
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:Describe*", "ec2:AllocateAddress", "ec2:AuthorizeSecurityGroupIngress", "ec2:AssociateAddress", "ec2:CreateSecurityGroup", "ec2:CreateTags", "ec2:RunInstances" ], "Resource": ["*"] }] }