cloudformation 在未启动自定义资源的情况下超时
cloudformation times out without initiating custom resource
我有一个简单的模板测试与 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 时超时而没有到达 "Resource creation initiated" 阶段(因此没有真正启动 lambda)。有什么办法可以降低故障率吗?现在接近 50% :(
它可能与实际的 Lambda 代码有关。实施适当的异常捕获机制很重要。如果出现故障并且它没有将故障信号发送回 CloudFormation,堆栈将永远等待(或直到超时)。
值得注意的是,在过去的 3 年里,我一直在广泛使用 Custom Resources,但我从未使用过 Lambda 没有开始(至少在我使用的地区:us-east-1, ca-central-1, us -west-2).
好吧,正如 Laurent 所建议的, 我的 lambda 函数有问题。有一种情况是它在没有将结果保存到 S3 的情况下退出(为什么 h* cloudformation 不能只读取 lambda 输出?)。 "Resource creation initiated" 似乎是数据保存到 S3 的指标,而不是 运行 lambda。我更正了退出条件,增加了超时时间,并且该功能非常有效。
你问丢失的日志条目怎么办?好吧,这只是我的错误。由于 CloudWatch 不允许将日志过滤器设置为未来或动态 "now",每次尝试后我都需要单击过滤器并将其更改为显示最新条目(aws 可以改善用户体验的另一点) .我错过了那个细节,cloudwatch 根本没有向我显示最新的日志(愚蠢的我!抱歉)
我有一个简单的模板测试与 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 时超时而没有到达 "Resource creation initiated" 阶段(因此没有真正启动 lambda)。有什么办法可以降低故障率吗?现在接近 50% :(
它可能与实际的 Lambda 代码有关。实施适当的异常捕获机制很重要。如果出现故障并且它没有将故障信号发送回 CloudFormation,堆栈将永远等待(或直到超时)。
值得注意的是,在过去的 3 年里,我一直在广泛使用 Custom Resources,但我从未使用过 Lambda 没有开始(至少在我使用的地区:us-east-1, ca-central-1, us -west-2).
好吧,正如 Laurent 所建议的, 我的 lambda 函数有问题。有一种情况是它在没有将结果保存到 S3 的情况下退出(为什么 h* cloudformation 不能只读取 lambda 输出?)。 "Resource creation initiated" 似乎是数据保存到 S3 的指标,而不是 运行 lambda。我更正了退出条件,增加了超时时间,并且该功能非常有效。
你问丢失的日志条目怎么办?好吧,这只是我的错误。由于 CloudWatch 不允许将日志过滤器设置为未来或动态 "now",每次尝试后我都需要单击过滤器并将其更改为显示最新条目(aws 可以改善用户体验的另一点) .我错过了那个细节,cloudwatch 根本没有向我显示最新的日志(愚蠢的我!抱歉)