我想创建一个策略,允许IAM用户启动最大数量的实例(例如,5)。我发现了这个问题,但它并不符合我的要求:
Allow AWS IAM user to launch only one ec2 instance
此答案将用户限制为仅一个实例,但不限制固定数量。
似乎IAM没有为此操作提供现成的支持。我一直在试图计算该用户的实例数量,并将其作为策略的条件,但我还没有找到明显的方法来实现它。
答案 0 :(得分:0)
无法将特定用户限制为特定数量的Amazon EC2实例。 (有基于帐户的限制,但不是用户限制)。
我建议你编写一个代表用户启动实例的应用程序,首先检查已经使用的实例数。要跟踪启动实例的用户,请使用用户的标识应用标记。然后,您可以授予用户使用其特定标记停止/终止任何实例的权限。 (只要确保他们也没有权限更改标签。)
实际上,用户没有启动实例 - 您的脚本正在启动它们。
答案 1 :(得分:0)
您不能直接限制 IAM用户以通过IAM策略创建数量有限的资源(EC2实例)。解决方案是,如果用户超出给定的限制,则可以删除多余的实例。我遇到了一个微笑的问题,经过大量的研发,我通过 AWS cloudTrail 找到了一种解决方案来完成此任务。 您可以在特定区域或所有区域中使用带有S3存储桶的AWS CloudTrail配置跟踪,以保存跟踪日志。要读取日志,可以使用如下所示的AWS CLI命令-
aws cloudtrail lookup-events --lookup-attributes AttributeKey=Username,AttributeValue=YourIAMuserID --region yourRegionName 2>&1;
此CLI命令的结果是,您将获得在实例启动时创建的日志详细信息,您可以从结果数组中计算用户创建的实例数。
您可以通过以下CLI命令终止实例,该用户不需要该命令-
sudo aws ec2 terminate-instances --instance-ids instanceId --region us-east-1 2>&1
还有更多可能的方法可以完成此任务,我正在使用它,并且对我来说很好用。
答案 2 :(得分:-1)
CloudTrail无法保留90天以上的日志。因此,使用CloudTrail实现逻辑并不可靠。