it-swarm.cn

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

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

84
Geo

更新2015-02-27:

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

旧回覆:

Amazon的FAQ 表示,除了启动时,无法在任何地方定义安全组。

53
towo

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

AWS控制台

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

Change Security Group

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

Select 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

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

83
hanxue

现在可以执行此操作。单击操作菜单,然后单击更改安全组-选择要使用的安全组。

7
user193616
  1. 从要移至其他安全组的实例创建AMI映像。
  2. 使用该映像启动一个新实例,现在我们可以将该新实例分配给另一个安全组。
  3. 丢弃前一个实例。

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

5
Rajan

正如Towo所说,除了启动时间之外,您无法在任何地方更改实例的安全组。

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

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

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

因此,如果您需要VPC组的其他功能(更改组,控制入口/出口流量等),则可能需要查看VPC提供的其他功能。

5
idiom

截至2016年11月24日。@hanxue给出的上述答案是正确的,但并不完整。 AWS中有两种类型的实例:私有云中称为vpc实例称为Ec2 Classic的公共实例。您只能更改VPC实例的安全组,而不能更改EC2-classic。您想看到的AWS官方文档屏幕截图。 您想看的文档

the differences from AWS official documentation

1
Balman Rawat

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

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.
0
James Morgan