
使用 AWS CLI 创建 Lambda 函数时,若错误地用 --code fileb://... 指向 ZIP 文件,会触发 'in ' requires string as left operand, not int 这类隐晦报错;根本原因是参数名和前缀不匹配——应改用 --zip-file 参数配合 fileb:// 前缀。
使用 aws cli 创建 lambda 函数时,若错误地用 `--code fileb://...` 指向 zip 文件,会触发 `'in
在 AWS CLI v2 中,--code 参数仅接受 JSON 格式的结构化值(如 { "ZipFile": "base64-encoded-bytes" } 或 { "S3Bucket": "...", "S3Key": "..." }),不支持直接传入 fileb:// 路径。当你执行:
aws lambda create-function \ --function-name "helloWorld" \ --runtime nodejs20.x \ --role "arn:aws:iam::123456789012:role/lambda-execution-role" \ --handler "helloWorld.handler" \ --code fileb://helloWorld.zip # ❌ 错误:--code 不接受 fileb://
CLI 会尝试将二进制 ZIP 文件内容当作 JSON 字符串解析,导致底层 Python 报出 'in <string>' requires string as left operand, not int</string> ——本质是解析器把读取的字节流(含非 UTF-8 字节)误判为整数类型,再执行字符串 in 操作时类型不匹配。
✅ 正确做法是:使用 --zip-file 参数(专为本地 ZIP 设计),并保持 fileb:// 前缀:
aws lambda create-function \ --function-name "helloWorld" \ --runtime nodejs20.x \ --role "arn:aws:iam::123456789012:role/lambda-execution-role" \ --handler "helloWorld.handler" \ --zip-file fileb://helloWorld.zip # ✅ 正确:--zip-file + fileb://
⚠️ 注意事项:
-
--zip-file是--code的快捷替代形式,二者互斥;不能同时使用。 - ZIP 文件必须包含有效的入口文件(如
helloWorld.js),且路径需与--handler中的模块名一致(Node.js 中helloWorld.handler表示require('./helloWorld').handler)。 - 生成 ZIP 时推荐使用 Unix 风格路径,避免 Windows 反斜杠干扰(你的
zip -r "helloWorld.zip" "./helloWorld.js"更稳妥,而非".\helloWorld.js")。 - 若后续需更新函数代码,请用
aws lambda update-function-code --function-name "helloWorld" --zip-file fileb://helloWorld.zip。
总结:牢记 --code 用于结构化定义(S3/内联 Base64),而 --zip-file 才是上传本地 ZIP 包的专用参数。这一区分是避免 AWS CLI 类型错误的关键。

















