我正在尝试更新其中包含一些lambda函数的云形成模板。该模板的最新版本是在几年前部署的,当前所有lambda函数的运行时均为 node6.10 。
我已将所有功能的运行时更新为 node10.x ,但是当我部署模板时,会收到以下消息:
创建或更新AWS Lambda函数不再支持nodejs6.10的运行时参数
我已经创建了一个变更集,并对其进行了审查,其中包括每个lambda函数的运行时属性的更新,但是Cloud Formation似乎忽略了它。
有什么我想念的吗?
答案 0 :(得分:1)
上下文: 我以为您遇到了这个问题-(尝试放大推送,然后放大添加身份验证后收到“ nodejs版本不支持错误”消息)
转到放大->后端->身份验证->认知->单击认知云形式-> 搜索“运行时:节点”
将其更改为“运行时:nodejs8.10”-错误消息中建议的最新版本
重新运行
$ amplify push
答案 1 :(得分:0)
不幸的是,我发现我必须更新Cloud Formation模板外部中所有功能的运行时,才能部署堆栈。我使用了以下脚本:
const AWS = require('aws-sdk')
const lambda = new AWS.Lambda(...)
main().catch(err => {
console.error(err)
process.exit(1)
})
async function main() {
const functions = await getFunctions()
await Promise.all(
functions
// filter only functions you want to update
.filter(...)
.filter(x => x.Runtime !== 'nodejs10.x')
.map(updateFunction)
)
}
async function updateFunction(func) {
await lambda
.updateFunctionConfiguration({
FunctionName: func.FunctionName,
Runtime: 'nodejs10.x'
})
.promise()
console.log(`function updated: ${func.FunctionName}`)
}
async function getFunctions() {
let marker
let functions = []
do {
const result = await lambda
.listFunctions({
Marker: marker
})
.promise()
functions = [...functions, ...result.Functions]
marker = result.NextMarker
} while (marker)
return functions
}