I have an Amazon EC2 instance running and I will like to add another security group to that instance and then remove the current security group from that instance. Is this possible?

  • Just to add a few more bits of information. We have two instances joint to two security groups. We want to separate this and dedicate a security group per instance. – Geo Jul 7 '09 at 15:25

Update 2015-02-27:

This is now possible, see the answer below.

Old reply:

Amazon's FAQ says it's not possible to define a security group anywhere but at launch time.

| improve this answer | |
  • 1
    Thanks, I miss that question when I was browsing the FAQ. Thanks again. – Geo Jul 7 '09 at 15:46
  • 2
    This answer is outdated. Now you can modify EC2 VPC Security Groups. See @hanxue answer below. – Diego F. Durán Feb 26 '15 at 12:21
  • Need to update!! See below answer – Axis Jan 4 '19 at 2:49

Update: As of January 2014, you can now change security groups for running AWS EC2 instances.

AWS Console

Simply right-click on an instance, and click on Change Security Group

Change Security Group

Add/remove security groups as appropriate and click Assign Security Groups when done

Select Security groups

EC2 Command Line

Use the following command:

ec2-modify-instance-attribute <instance-id> --group-id <group-id>

AWS Command Line

Use the following command:

aws ec2 modify-instance-attribute --instance-id i-12345 --groups sg-12345 sg-67890

Note, you must specify all security groups with which you'd like the instance associated.

| improve this answer | |
  • 5
    The "Change Security Groups" option is present in the menu but disabled. I'm using region ap-southeast-2. – Alastair Irvine Jan 30 '14 at 8:45
  • 4
    this currently only applies to VPC instances. the security groups that a non-VPC instance belong to are fixed / immutable and are set when it's first launched. the only way to change them is to create a bundle from the existing instance and re-launch a new instance using the bundled ami. – ives Apr 9 '14 at 21:36
  • 1
    What if my newly created security group isn't listed in the Change Security Groups modal? – 2540625 Dec 8 '15 at 0:02
  • This option may only be available inside of a VPC. Older AWS accounts that were created pre-vpc and have instances running in EC2 classic mode will not be able to take advantage of this. – cgseller Mar 15 '16 at 19:48
  • It is confusing that the CLI doesn't use comma-separated lists as in many other places. – user67327 Jul 16 '19 at 14:18

It is now possible to do this. Click on the actions menu and Change Security Groups - Select the Security Groups you would like to use.

| improve this answer | |
  • 3
    Only in VPCs, I believe. – ceejayoz Jan 8 '14 at 14:00
  • It appears so. The "Change Security Groups" option is present in the menu but disabled for non-VPC instances. – Alastair Irvine Jan 30 '14 at 8:41
  • 1
    What if my newly created security group isn't listed in the Change Security Groups modal? – 2540625 Dec 8 '15 at 0:03
  1. Create an AMI image from the instance you want to move to a different security group.
  2. Launch a new instance using that image, now we can assign this new instance to a different security group.
  3. Discard the previous instance.

This requires downtime on your instance. There may be some other options available using the API.

| improve this answer | |

As towo said you can't change a security group of an instance anywhere but launch time.

Unless you are using a VPC where security groups differ from EC2 security groups.

This page outlines the differences between EC2 and VPC security groups.


So if you require the extra functionality of the VPC groups (Changing groups, control ingress/engress traffic, etc.), you may want to look at the additional functionality provided by VPCs.

| improve this answer | |
  • Welcome to Server Fault! Whilst this may theoretically answer the question, it would be preferable to include the essential parts of the answer here, and provide the link for reference. – Scott Pack Nov 21 '12 at 0:55

As of 2016 Nov 24. above answer given by @hanxue is right but not complete. There are two types of instances in AWS: instances inside private cloud called vpc instances and public instances called Ec2 Classic. You can only change security groups of VPC instances but not EC2-classic. Aws official documentation screenshot you would like to see. docs you would like to see

the differences from AWS official documentation

| improve this answer | |

If you are using boto3 you need to call modify_attribute and pass a list of group ids


response = instance.modify_attribute(Groups=['string'])

Groups (list) --
  [EC2-VPC] Changes the security groups of the instance. You must 
  specify at least one security group, even if it's just the default 
  security group for the VPC. You must specify the security group ID,
  not the security group name.
| improve this answer | |

5 security groups

> You can have 50 inbound and 50 outbound rules per security group > giving a total of 100 combined inbound and outbound. You can assign up > to 5 security groups to a network interface. If you need to increase > or decrease this limit, you can contact AWS Support.

| improve this answer | |
  • This would be better on a comment to one of the other answers. – Daniel K Nov 29 '19 at 12:36

However according the this FAQ "modify the settings for the current security group - which will affect all instances running in the specific group" you can change gradually redefine the existing ones. As I'm trying this now for my scenario through the EC2 console, my records where all erased!

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.