如何将安全组添加到正在运行的EC2实例?

我有一个Amazon EC2实例正在运行,我想向该实例添加另一个安全组,然后从该实例中删除当前安全组。 这可能吗?

更新 2015-02-27:

这现在是可能的,请参阅下面的答案 。

旧回复:

亚马逊的常见问题解答说,不可能在发布时在任何地方定义安全组。

更新 :截至2014年1月,您现在可以更改运行AWS EC2实例的安全组。

AWS控制台

只需右键单击一个实例,然后单击Change Security Group

更改安全组

根据需要添加/删除安全Assign Security Groups ,完成后单击Assign Security Groups

选择安全组


EC2命令行

使用以下命令:

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

AWS命令行

使用以下命令:

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

请注意,您必须指定您希望实例关联的所有安全组。

现在可以做到这一点。 点击操作菜单和更改安全组 – select您要使用的安全组。

  1. 从要移动到不同安全组的实例中创build一个AMI映像。
  2. 使用该映像启动一个新实例,现在我们可以将这个新实例分配给不同的安全组。
  3. 丢弃先前的实例。

这需要您的实例停机。 使用API​​可能有其他一些选项可用。

正如你所说的,你不能在任何地方改变一个实例的安全组,但是启动时间。

除非您使用的安全组不同于EC2安全组的VPC。

本页概述了EC2和VPC安全组之间的区别。

http://docs.amazonwebservices.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html

因此,如果您需要VPC组的额外function(更改组,控制入口/入口stream量等),您可能需要查看VPC提供的附加function。

截至2016年11月24日。以上回答@韩雪是正确的,但不完整。 AWS中有两种types的实例 :私有云中的实例 ,称为vpc实例,以及名为Ec2 Classic的公共实例 。 您只能更改VPC实例的安全组,而不能更改EC2-classic。 Aws官方文档截图你想看看。 文件,你想看到

与AWS官方文档的区别

如果您使用的是boto3,则需要调用modify_attribute并传递组标识列表

http://boto3.readthedocs.io/en/latest/reference/services/ec2.html#EC2.Instance.modify_attribute

 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. 

然而,根据这个FAQ“修改当前安全组的设置 – 这将影响在特定组中运行的所有实例”,您可以逐渐重新定义现有安全组。 正如我现在正在尝试通过EC2控制台我的情况,我的logging在哪里擦除!