Here is how you can use it. It was not perfect, but you have ideas on how you can use it. Obviously, there is more to narrow it down, but that's enough for me at the moment.
In the first section, they cannot harm, so I allow them to have full access to them at the moment. (I have to make S3 more granular)
I needed an elastic balance: DeregisterInstancesFromLoadBalancer, so I added that this command can only use this in the European region. This is normal now, since they are only there.
The third and fourth sections are for my two Elastic Beanstalk applications that they must have access to.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:Describe*", "elasticloadbalancing:Describe*", "autoscaling:Describe*", "cloudwatch:Describe*", "cloudwatch:List*", "cloudwatch:Get*", "s3:Get*", "s3:List*", "sns:Get*", "sns:List*", "cloudformation:Describe*", "cloudformation:Get*", "cloudformation:List*", "cloudformation:Validate*", "cloudformation:Estimate*", "rds:Describe*", "elasticbeanstalk:CreateStorageLocation", "sqs:Get*", "sqs:List*", "autoscaling:SuspendProcesses", "autoscaling:ResumeProcesses", "autoscaling:UpdateAutoScalingGroup", "autoscaling:DescribeAutoScalingGroups", "cloudformation:UpdateStack", "cloudformation:DescribeStacks", "ec2:AuthorizeSecurityGroupIngress", "ec2:RevokeSecurityGroupIngress", "s3:PutObject", "s3:DeleteObject", "s3:PutObjectAcl" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "elasticloadbalancing:RegisterInstancesWithLoadBalancer", "elasticloadbalancing:DeregisterInstancesFromLoadBalancer" ], "Resource": [ "arn:aws:elasticloadbalancing:eu-west-1:12345678910:loadbalancer/*" ] }, { "Effect": "Allow", "Action": [ "elasticbeanstalk:Check*", "elasticbeanstalk:Describe*", "elasticbeanstalk:List*", "elasticbeanstalk:RequestEnvironmentInfo", "elasticbeanstalk:RetrieveEnvironmentInfo", "elasticbeanstalk:CreateApplicationVersion", "elasticbeanstalk:CreateConfigurationTemplate", "elasticbeanstalk:UpdateApplicationVersion", "elasticbeanstalk:UpdateConfigurationTemplate", "elasticbeanstalk:UpdateEnvironment", "elasticbeanstalk:DescribeEnvironmentResources", "elasticbeanstalk:ValidateConfigurationSettings" ], "Resource": [ "*" ], "Condition": { "StringEquals": { "elasticbeanstalk:InApplication": [ "arn:aws:elasticbeanstalk:eu-west-1:12345678910:application/My App" ] } } }, { "Effect": "Allow", "Action": [ "elasticbeanstalk:Check*", "elasticbeanstalk:Describe*", "elasticbeanstalk:List*", "elasticbeanstalk:RequestEnvironmentInfo", "elasticbeanstalk:RetrieveEnvironmentInfo", "elasticbeanstalk:CreateApplicationVersion", "elasticbeanstalk:CreateConfigurationTemplate", "elasticbeanstalk:UpdateApplicationVersion", "elasticbeanstalk:UpdateConfigurationTemplate", "elasticbeanstalk:UpdateEnvironment", "elasticbeanstalk:DescribeEnvironmentResources", "elasticbeanstalk:ValidateConfigurationSettings" ], "Resource": [ "*" ], "Condition": { "StringEquals": { "elasticbeanstalk:InApplication": [ "arn:aws:elasticbeanstalk:eu-west-1:12345678910:application/My Second App" ] } } } ] }