我正在尝试使用库boto3
从另一个lambda函数创建lambda函数,但遇到了一些问题,尤其是创建的code
部分。
在boto3
Documentation中,它指出对于代码,我们需要这样的东西。
Code={
'ZipFile': b'bytes',
'S3Bucket': 'string',
'S3Key': 'string',
'S3ObjectVersion': 'string'
}
在下面,它根据代码区域说明以下内容。
代码(dict)- [需要]
该功能的代码。
ZipFile (字节)- 部署程序包的base64编码的内容。 AWS SDK和AWS CLI客户端为您处理编码。
S3Bucket (字符串)- 与您的功能位于同一AWS区域中的Amazon S3存储桶。存储桶可以位于其他AWS账户中。
S3Key (字符串)- 部署程序包的Amazon S3密钥。
S3ObjectVersion (字符串)- 对于版本化的对象,是要使用的部署包对象的版本。
据我了解,我可以创建一个包含代码的存储桶(我不需要任何自定义依赖项,因此不需要部署包)。由此,我可以创建函数(显然我错了)。
client.create_function(
FunctionName = 'Test',
Runtime = 'python3.7',
Role = 'role',
Handler = 'Test.lambda_handler',
Code = {
'S3Bucket': 'myBucketName',
'S3Key': 'FunctionNameInsideBucket.py'
}
)
运行上面的代码时,我得到Could not unzip uploaded file. Please check your file, then try to upload again.
。
关于我在做什么错的任何想法吗?是否必须从存储桶中的源代码或zip文件中创建功能,然后部署程序包?
答案 0 :(得分:1)
您无法通过此方法上传单个.py文件。您必须将Lambda函数作为.zip文件上传。