我们如何控制联合用户要启动的EC2实例的数量?

时间:2018-10-11 06:13:32

标签: amazon-web-services amazon-iam federated-identity

我有一个用例,需要限制联盟用户仅启动一个EC2实例,是否有任何变通办法来设置策略中的这些内容。

2 个答案:

答案 0 :(得分:1)

创建一个按计划运行的lambda,以清理您的帐户并删除所有未正确标记的内容。

http://www.1strategy.com/blog/2016/02/23/use-aws-lambda-terminate-untagged-ec2-instances/

如果您的用户有多个标记的ec2实例,则保留最旧的实例。 然后,让您的用户知道,任何未正确标记或创建的资源超出其限制的资源将被自动删除。 大多数人会在创建一个ec2实例大约5或10分钟后删除该实例。

创建按计划运行的lambda: https://medium.com/blogfoster-engineering/running-cron-jobs-on-aws-lambda-with-scheduled-events-e8fe38686e20

您可以在lambda函数中使用这样的特定标签来获取aws资源,如下所示: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/ResourceGroupsTaggingAPI.html#getResources-property

var params = {
  PaginationToken: 'STRING_VALUE',
  ResourceTypeFilters: [
    'STRING_VALUE',
    /* more items */
  ],
  ResourcesPerPage: 0,
  TagFilters: [
    {
      Key: 'STRING_VALUE',
      Values: [
        'STRING_VALUE',
        /* more items */
      ]
    },
    /* more items */
  ],
  TagsPerPage: 0
};
resourcegroupstaggingapi.getResources(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

此处的回叫提供资源Arn和与其关联的标签。 在这里,您可以保留这些资源或将其删除。

答案 1 :(得分:1)

我不建议自动删除资源。错误可能对公司致命。

Ryan的回答很好。使用Lambda监视谁拥有哪些资源。还可以使用Lambda为新创建的资源自动标记所有者。 CloudTrail是监视和衡量谁在何时何地执行操作的绝佳资源。

但是,我希望Lambda向员工及其经理(或适当的命令链)发送有关违规行为的电子邮件,而不是终止资源。当大多数人因违反公司政策而开会时,他们会很快学到东西,这可能会导致合理的谴责或辞职。这比尝试证明导致整个公司倒闭的软件错误要好得多。