我有一个EC2实例,该实例具有附加的S3_Admin_Access角色。我也有一个具有完全管理员访问权限的IAM用户,并且使用该用户的凭据在EC2实例上配置了aws cli。但是,当我尝试从EC2实例终端执行aws s3 ls
时,HTTPS连接超时。从笔记本电脑的终端尝试相同的操作,呼叫成功。将aws cli配置为具有与EC2实例相同的凭据。
我通过SSH / HTTP / HTTPS向EC2实例添加了入站规则,并删除了允许所有流量的出站规则。有趣的是,如果我添加“允许所有”出站规则,则aws cli调用有效,HTTPS连接不会超时,并且会获得所有存储桶的列表。我还添加了仅用于SSH / HTTPS的出站规则,这再次起作用。但是,删除出站规则会再次打断电话。
我认为入站规则是有状态的,例如,如果我在协议/端口上有入站规则,则不需要在同一端口上有明确的出站规则。但是,这似乎不起作用。还有什么可能是问题?请注意,我可以在没有出站规则的情况下进入ec2实例。
答案 0 :(得分:2)
您应该将出站规则保留在安全组上。这允许从Amazon EC2实例启动连接,这正是使用AWS CLI时想要的连接。
安全组的有状态性质意味着,如果您正在发起请求,则您不需要安全组中的入站规则。响应于出站请求,流量将被允许流回。但是,实际上 会需要入站规则,因为您是通过SSH或RDP连接到实例的。
这与Web服务器相反,后者希望允许入站连接,但不一定需要出站规则。
但是,通常可以在安全组中允许所有出站连接,因为该实例是受信任的,并且它通常希望从Internet下载信息(例如,软件更新)。
底线:放回出站规则,您会没事的。