【发布时间】:2016-05-16 01:51:50
【问题描述】:
我正在尝试使用 AWS CLI 创建一个 AWS Lambda 函数。因此,我通过传入--generate-cli-skeleton 参数并相应地替换值来生成用于aws lambda create-function 函数的JSON 输入框架。
问题是当我执行命令来创建函数时,它给了我这个错误:
A client error (InvalidParameterValueException) occurred when calling the CreateFunction operation: Could not unzip uploaded file. Please check your file, then try to upload again.
这就是我运行命令的方式:
aws lambda create-function --cli-input-json file://C:\Projects\Automated_Deployment\lambda_function_deploy.json
.json文件的内容是:
{
"FunctionName": "MyFunction",
"Runtime": "nodejs",
"Role": "arn:aws:iam::------------:role/lambda_dynamo",
"Handler": "index.handler",
"Code": {
"ZipFile": "fileb://C:/Projects/src/zip/MyFunction.zip"
},
"Description": "description goes here",
"Timeout": 10,
"MemorySize": 128,
"Publish": true
}
令人惊讶的是,如果我尝试在不使用 JSON 文件并在命令行中提供所有参数的情况下创建函数,那么它就可以工作。因此,例如,这完全没有任何问题:
aws lambda create-function --function-name MyFunction --runtime nodejs --role arn:aws:iam::------------:role/lambda_dynamo --handler index.handler --zip-file fileb://C:/Projects/src/zip/MyFunction.zip
这是同一个 .zip 文件。关于我在这里做错了什么的任何提示?我尝试将"ZipFile": "fileb://C:/Projects/src/zip/MyFunction.zip" 替换为:
"ZipFile": "file://C:/Projects/src/zip/MyFunction.zip" 和 "ZipFile": "C:/Projects/src/zip/MyFunction.zip" 但问题仍然存在。
编辑: 我发现了我们可以传递给 CLI 命令的 --debug 选项。问题是当我们提供来自 JSON 的输入时,该工具没有正确读取 ZipFile。因此,例如,如果我运行在命令本身中提供所有参数的命令,我可以看到正确编码为 base64 的 zip 文件,即:
2016-02-08 10:43:59,831 - MainThread - botocore.endpoint - DEBUG - Making request for <botocore.model.OperationModel object at 0x0000000004149F28> (verify_ssl=True) with params: {'body': '{"Code": {"ZipFile": "UEsDBBQAAAAIAFiGPUiLOeW/nwcAANsdAAAIAAAAaW5kZXguanO1Gdtu2zb0PUD+gdVDI2OOmrZrBzgICi9OC29FYsRpX4pCUCQ65iJLqk
....
redacted
但是,当我从 JSON 文件(即 --cli-input-json)提供参数时,命令 base64 会编码 JSON 中 ZipFile 键的值(即该文件的 URI,即 fileb://C: /Projects/src/zip/MyFunction.zip)
现在我不确定我们需要为 ZipFile 键提供什么值,还是工具/命令中的错误?
EDIT2:如果我提供我的 zip 文件的 base64 编码字符串,该命令将再次对该字符串进行 base64 编码,这将给出相同的错误(即无法解压缩。)所以我的问题是什么ZipFile 字段需要什么?带有 file:// 协议或 fileb:// 的 URL? Zip 文件内容 base-64 编码?
【问题讨论】:
标签: amazon-web-services aws-lambda aws-cli