尝试设置AWS Lambda运行时为指定ARN失败,请求技术支持
问题详情
需要将AWS Lambda函数的运行时设置为特定版本,从日志中获取目标ARN后执行CLI命令失败:
尝试的命令:
aws lambda update-function-configuration --function-name function_name_xxxx --runtime arn:aws:lambda:us-east-1::runtime:b475b23763329123d9e6f79f51886d0e1054f727f5b90ec945fcb2a3ec09afdd
报错信息:
An error occurred (InvalidParameterValueException) when calling the UpdateFunctionConfiguration operation: Value arn:aws:lambda:us-east-1::runtime:b475b23763329123d9e6f79f51886d0e1054f727f5b90ec945fcb2a3ec09afdd at 'runtime' failed to satisfy constraint: Member must satisfy enum value set: [nodejs20.x, provided.al2023, python3.12, java17, nodejs16.x, dotnet8, python3.10, java11, python3.11, dotnet6, java21, nodejs18.x, provided.al2, ruby3.3, java8.al2, ruby3.2, python3.8, python3.9] or be a valid ARN
已尝试无效操作:
- 给ARN添加AWS账号ID,执行后报错不变
- 使用
get-function-configuration获取的RuntimeVersionConfig.RuntimeVersionArn作为参数,问题依旧
解决步骤
Lambda的--runtime参数只接受两类有效值:官方预设的运行时标识(比如nodejs20.x),或者自定义运行时层的ARN。你之前的错误是把运行时版本ARN直接放到了--runtime参数里,正确的做法是分开指定运行时标识和版本ARN:
修正CLI命令格式
用--runtime指定官方运行时标识,用--runtime-version-arn指定目标版本的ARN,命令示例:aws lambda update-function-configuration --function-name function_name_xxxx --runtime nodejs20.x --runtime-version-arn arn:aws:lambda:us-east-1::runtime:b475b23763329123d9e6f79f51886d0e1054f727f5b90ec945fcb2a3ec09afdd注意:
--runtime的值要和目标版本ARN对应的运行时类型一致(比如ARN对应nodejs20.x,就填nodejs20.x)。验证版本ARN的有效性
可以通过以下命令查看当前区域支持的所有运行时版本及其ARN,确认你用的ARN存在且可用:aws lambda list-runtime-versions --region us-east-1自定义运行时的特殊处理
如果是自定义运行时,需要先把运行时打包成Lambda层,然后将--runtime设为provided.al2或provided.al2023,再通过--layers参数关联自定义层的ARN,而非直接把层ARN放到--runtime里。
内容的提问来源于stack exchange,提问作者mohammad khamis

