【问题标题】:Automatically shut down AWS Lambda before I go over free limits在我超出免费限制之前自动关闭 AWS Lambda
【发布时间】:2020-07-11 12:43:48
【问题描述】:

AWS Lambda 每月提供 100 万个免费请求,作为其“始终免费”套餐的一部分。这对我来说听起来很多,但原则上有人可能会尝试攻击我的 AWS 服务(例如,拒绝服务攻击,或者我变得比我想象的更受欢迎)。

我正在构建的服务不是关键任务,所以如果我即将超过免费层级限制,我想自动停用我的 API 网关,关闭我的 API。

这可能吗?如果有,怎么做?

【问题讨论】:

  • 您不会真正“终止我的 lambda 函数”,因为它们通常运行时间不到一秒。相反,您可以考虑停用 API 网关。
  • 好点。我更新了我的问题以澄清。

标签: amazon-web-services aws-lambda


【解决方案1】:

AWS Free Tier 包括:

  • 每月 1,000,000 次免费请求(通常每 100 万次请求 0.20 美元)
  • 每月 400,000 GB 秒的计算时间(通常每 GB 秒 0.0000166667 美元)

每月免费使用:$0.20 + $6.66 = $6.86

许多公司发现他们对 Lambda 的生产使用符合这一使用量。

因此,除非您运行繁重的工作负载,否则我不建议您花太多时间担心超出 AWS Lambda 的免费套餐金额。如果你这样做了,那就跳过你下次去星巴克吧。

【讨论】:

    【解决方案2】:

    您可以利用 CloudWatch 指标和警报构建一个简单的解决方案。

    Lambda function invocations 被记录为指标。您可以使用CloudWatch Alarms 在调用次数超过 X(可能超过某个时间间隔)时发出警报。将警报通知发送到订阅了另一个 Lambda 函数的 SNS 主题。第二个 Lambda 函数可以推断触发警报的 Lambda 函数的名称或 ARN,然后断开 Lambda 与其触发器的连接,或者以其他方式停用(可能删除)Lambda 函数。

    【讨论】:

      【解决方案3】:

      您可以为 Lambda 函数设置并发限制,这样就很难超出限制。见https://aws.amazon.com/about-aws/whats-new/2017/11/set-concurrency-limits-on-individual-aws-lambda-functions/?nc1=h_ls

      【讨论】:

      • 一个月有270万秒。即使并发限制 1 仍然会让我超过免费层。
      【解决方案4】:

      您可以使用成本资源管理器 API 并具体说明此 API - https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_GetCostAndUsage.html

      最后在你的 lambda 代码中调用 API,检查是否使用超过阈值调用此 API (https://docs.aws.amazon.com/apigateway/api-reference/link-relation/stage-update/) 以删除调用 URL 的阶段。

      这样您不会删除任何资源,但会删除公共访问权限。

      检查使用指标后停用 API 的其他方法- 1 - 更新 API 资源策略以阻止公共访问 2 - 删除完整的 API 3 - 删除集成

      CLI 示例 - aws ce get-cost-and-usage --time-period Start=2020-03-01,End=2020-03-31 --granularity MONTHLY --metrics "BlendedCost" "UnblendedCost" "UsageQuantity" --group-by Type=DIMENSION,Key=SERVICE Type=TAG,Key=Environment --filter file://t.json

      t.json

      {
      "Dimensions": {
          "Key": "SERVICE",
          "Values": [
              "AWS Lambda"
          ]
      }}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-27
        • 2017-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多