我有一个包含Lambda函数的cloudformation堆栈,该函数作为触发器映射到SQS队列。
发生的事情是我不得不删除映射,然后再次手动创建它,因为我想更改batch size
。现在,当我想更新映射时,cloudformation会引发错误The resource you requested does not exist.
消息。
资源映射代码如下所示:
"EventSourceMapping":{
"Properties":{
"BatchSize":5,
"Enabled":"true",
"EventSourceArn":{
"Fn::GetAtt":[
"ProcessorQueue",
"Arn"
]
},
"FunctionName":{
"Fn::GetAtt":[
"ProcessorLambda",
"Arn"
]
}
},
"Type":"AWS::Lambda::EventSourceMapping"
}
我知道我已经删除了最初创建的映射cloudformation并手动添加了它,这导致了问题。我该如何解决?因为我现在不能推送任何更新。
请帮忙
从我的角度来看,您所做的是一个错误。当您使用Cloud Formation时,您不应手动应用更改。您可以,也许很好,因为一旦创建就可能不在乎堆栈。但是由于您正在尝试更新堆栈,因此这告诉我您想保留堆栈并按时间更新它。
为了缩小问题范围,请首先明确说明手动创建的映射与云形成堆栈不同步。因此,从云形成的角度来看,是否保留该映射都无关紧要。我想知道,如果您保留手动创建的映射并从Cloud Formation中创建新映射,将会发生什么?可能会抱怨,因为您将对同一对(lambda,queue)重复进行映射。尝试这个:
EventSourceMapping
从脚本中完全删除资源。这一步是基本上清除丢失的引用。应用更改集。EventSourceMapping
堆栈中。如果您在第2步中遇到错误,例如“此映射已存在”,则必须从控制台中删除手动创建的映射。然后再尝试步骤2。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句