1

我目前正在从事一个拥有大量 IAM 用户的项目,每个用户都需要对特定 SQS 队列进行有限访问。

例如,假设我有一个名为“Bob”的 IAM 用户和一个名为“BobsQueue”的 SQS 队列。我想做的是授予 Bob 管理他的队列 (BobsQueue) 的完全权限,但我想限制他的使用,这样:

  • Bob 每秒只能向 BobsQueue 发出 10 个 SQS 请求。
  • Bob 每月发出的 SQS 请求不能超过 1,000,000 个。

我本质上想对这个 SQS 队列应用任意使用限制。

有任何想法吗?

4

1 回答 1

1

在我看来,没有任何可用的 AWS 服务提供资源使用限制,除非内置到服务的基本操作方式中(例如Amazon DynamoDB中的预置吞吐量)并且Amazon SQS也不例外,只要可用密钥支持目前所有采用访问策略语言进行访问控制的 AWS 服务都缺乏此类资源限制约束。

虽然我可以看到您的用例,但我认为实际上更有可能看到这样的事情,将灯视为一种会计/计费功能,只要通过设置(可能是细粒度的)AWS 资源使用限制来控制成本是有意义的- 虽然这也不可用。

解决方法

您可以通过使用 IAM 策略来促进共享队列,该策略授予用户 Bob 访问权限,如Amazon SQS 的示例 AWS IAM 策略中所述,并通过为一个人创建 Amazon CloudWatch 警报依次使用Amazon CloudWatch监控此队列,从而实现您的规范的近似值或更多您想要限制的Amazon SQS 维度和指标,例如NumberOfMessagesSent。达到限制后,您可以撤销此共享队列的用户 Bob 的 IAM 授权,直到他再次合规。

  • 显然,在没有彻底的簿记的情况下,仅基于这个指标来实现“每秒”/“每月”规范并不一定是微不足道的,也不能在达到限制时准确地“拔掉插头”,而是需要考虑处理时间和 API 延迟。

祝你好运!

于 2013-02-03T17:12:21.720 回答