CloudFormation:创建或更新AWS Lambda函数不再支持nodejs6.10的运行时参数

时间:2019-07-04 10:19:20

标签: aws-lambda amazon-cloudformation

我正在尝试更新其中包含一些lambda函数的云形成模板。该模板的最新版本是在几年前部署的,当前所有lambda函数的运行时均为 node6.10

我已将所有功能的运行时更新为 node10.x ,但是当我部署模板时,会收到以下消息:

  

创建或更新AWS Lambda函数不再支持nodejs6.10的运行时参数

我已经创建了一个变更集,并对其进行了审查,其中包括每个lambda函数的运行时属性的更新,但是Cloud Formation似乎忽略了它。

有什么我想念的吗?

2 个答案:

答案 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
}