【问题标题】:Allow AWS IAM user to launch a maximum number of instances允许 AWS IAM 用户启动最大数量的实例
【发布时间】:2020-07-18 16:59:45
【问题描述】:
【问题讨论】:
标签:
amazon-web-services
amazon-ec2
amazon-iam
【解决方案1】:
无法将特定用户限制为特定数量的 Amazon EC2 实例。 (有基于帐户的限制,但没有用户限制)。
我建议您编写一个代表用户启动实例的应用程序,首先检查已在使用的实例数量。要跟踪谁启动了实例,请应用带有用户标识的标签。然后,您可以授予用户使用其特定标签停止/终止任何实例的权限。 (只要确保他们也没有更改标签的权限。)
实际上,用户并没有启动实例——您的脚本正在启动它们。
【解决方案2】:
您不能直接限制 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
有更多可能的方法来完成这项任务,我正在使用这个,它对我来说工作正常。
【解决方案3】:
CloudTrail 无法保留超过 90 天的日志。所以用CloudTrail来实现逻辑是不靠谱的。