2017-09-15 23 views
3

例如:是否AWS收费拉姆达在睡眠状态

count = 0 
     while True: 
      try: 
       if count == 5: 
        break 
       snap = ec.create_snapshot(
        VolumeId=vol_id, 
        Description=instance['InstanceId'] 
       ) 
       break 
      except Exception as e: 
       print(e) 
       sleep(180) 
       count = count + 1 

所以如果我有很多实例和错误的话那可能是运行拉姆达的很长一段时间。还有什么可以替代Lambda睡觉?

+0

除了下面的答案,对卷进行快照可能需要相当长的时间。你表示你有很多实例。你能否描述更多你想要做的事情? Lambda可能不是最好的解决方案。 – stdunbar

+1

为什么你不得不睡觉的线程?只需在连续5次使用cloudwatch触发器180秒后再次运行lambda,并且如果您希望重新使用任何数据,请将其保存在dynamodb或redis缓存中。这将节省您的时间和金钱。 –

+0

@stdunbar PS我会创建新的问题。我开始明白这一点。 –

回答

5

是的,你仍然收费。调用sleep()不会停止执行环境。从调用函数的时间到函数完成执行的时间(或直到达到配置的超时值),您都需要支付执行环境的持续时间。

+0

谢谢。 “调用sleep()不会停止执行环境。”这是我需要看到的。 –

1

我的假设是肯定的。基于三个因素

  1. 分配的内存AWS LAMBDA收费功能
  2. 执行数
  3. 计算时间

如果你看的时间是怎么calculated的定义。

持续时间为您的代码开始执行的时间,直到 返回,否则终止计算,四舍五入到最接近的100毫秒。 价格取决于您分配给您的 函数的内存量。每使用1 GB秒,您将被收取$ 0.00001667的费用。

AWS计算从您的代码开始执行到收到/结束时的费用。

+0

谢谢。非常明确的解释。 –