cloudformation超时而不启动自定义资源

时间:2018-06-07 13:53:55

标签: amazon-web-services aws-lambda amazon-cloudformation

我有一个简单的模板测试与lambda的通信,称为自定义资源。类似的东西:

{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Resources": {
    "test": {
      "Type": "Custom::test",
      "Properties": {
        "ServiceToken": "arn:aws:lambda:xxxxx:mylambda",
        "Input": "some input"
      }
    }
  },
  "Outputs": {
    "debug": {
      "Description": "debug ami id",
      "Value": { "Fn::GetAtt": [ "test", "output" ]}
    }
  }
}

问题是,这个CFT有时工作正常,有时会在CREATE_IN_PROGRESS超时而没有达到"资源创建已启动"阶段(所以没有实际开始lambda)。有什么办法可以降低失败率吗?现在它接近50%:(

2 个答案:

答案 0 :(得分:0)

它可能与实际的 Lambda 代码有关。实现适当的异常捕获机制非常重要。如果某些内容失败并且未将失败信号发送回 CloudFormation ,则堆栈将永远等待(或直到超时)。

值得注意的是,在过去的3年里,我一直在广泛使用自定义资源,我从来没有 Lambda 没有启动(至少在我使用的地区: us-east-1 ca-central-1 us-west-2 )。

答案 1 :(得分:0)

好吧,所以Laurent认为 是我的lambda函数的一个问题。有一个条件,它退出而没有将结果保存到S3(为什么h * cloudformation不能只读取lambda输出?)。并且"资源创建已启动"似乎是保存到S3的数据的指示器,而不是运行lambda。我纠正了退出条件,增加了超时,这个功能就像一个魅力。

你问的遗失日志条目怎么样?嗯,这只是我的错误。由于CloudWatch不允许将日志过滤器设置为将来,或者是动态"现在",在每次尝试之后我都需要单击过滤器并更改它以显示最新条目(aws可以改进的另一个点)用户体验)。我错过了那个细节,而cloudwatch根本没有向我展示最新的日志(愚蠢的我!对不起)