创建关闭Lambda的预算操作



我注册了一个免费的AWS Lambda帐户,并为我和其他人创建了一个简单的公共服务。然而,由于我还不知道使用情况如何,我现在想要小心。否则,有人可能会向我的服务发送一百万个请求,然后我要为此付费。我宁愿不要这项服务。

因此,我想创建一个预算操作,一旦超过0.01美元就关闭所有服务。我这样做的方式是,我已经授予Lambda服务角色(这是在我设置Lambda服务时自动创建的)预算权限(budgets.amazonaws.com),然后有一个IAM操作设置,一旦超出预算,就将AWSDenyAll管理策略添加到角色本身。

这似乎不起作用。如果我手动附加AWSDenyAll策略,Lambda服务仍然可用。我对角色/策略系统的理解可能也是根本错误的。

如何实现"完全关机"?可以由预算警报触发的操作?

您正在将AWSDenyAll策略应用于Lambda函数的执行角色,该角色用于定义从Lambda本身访问AWS资源的权限(配置>权限比;执行角色)。

您实质上已经阻止了Lambda函数本身访问AWS服务。

您没有阻止任何IAM主体(用户或角色),AWS服务(包括API网关)或其他AWS帐户,这就是为什么您的Lambda仍然可以手动或通过网关调用。


现在,一个可能出现的问题是"我如何阻止API网关调用我的Lambda?">

API Gateway被赋予访问权限来触发Lambda的方式是通过基于资源的权限策略(Configuration>权限比;基于资源的政策)。

这不是"封装"当前,您只能在AddPermission和AddLayerVersionPermission API操作范围内更新Lambda资源的基于资源的策略。

这意味着撤销API网关对调用你的函数的访问的唯一方法是删除允许API网关使用RemovePermissionAPI操作或通过控制台调用你的函数的资源策略。

没有办法通过预算操作来做到这一点。


可能出现的另一个问题是"我如何防止API网关

这仍然是不可能使用预算行动按照文档,你只能应用一个IAM策略或服务控制策略(SCP),没有一个会帮助你防止触发一个Lambda是通过API网关触发的。您可以在控制台中阻止AWS用户触发Lambda,但您无法阻止API网关,除非您使用IAM对您的用户进行身份验证。


没有任何方法可以"关闭";Lambda函数或API网关一旦达到特定的预算限制。

你只需要创建一个预算来提醒你,例如在服务维度上筛选Lambda和API Gateway服务,然后采取手动操作(设置每月使用预算,固定使用量和实际/预测通知)。

相关内容

  • 没有找到相关文章

最新更新