【问题标题】:Python - creating aws lambda deployment packagePython - 创建 aws lambda 部署包
【发布时间】:2016-03-05 11:30:29
【问题描述】:

我想使用 Fabric 任务为我的 AWS Lambda 编写更新代码的脚本。 Boto3 api 需要一个 base-64 编码的 zip 文件的字节数组。

假设我有源代码文件作为输入,创建它的最简单方法是什么?

【问题讨论】:

    标签: python boto aws-lambda boto3


    【解决方案1】:

    使用当前的boto3,不要解压,不要base64编码。 你可以通过这样的打开和阅读来做到这一点:

    import boto3
    c = boto3.client('lambda')
    c.create_function({
        'FunctionName': 'your_function',
        'Handler': 'your_handler',
        'Runtime': 'python3.6',
        'Code': {'ZipFile': open('./deploy.zip', 'rb').read()}
    })
    

    我使用上面的 zip 文件快速入门。您还可以将 deploy.zip 上传到 S3 存储桶,并将存储桶 + 密钥作为字符串在“代码”字典中传递为“S3Bucket”和“S3Key”。

    【讨论】:

    • 仅供参考:我仍在使用上面的代码和 boto3 1.9。
    【解决方案2】:

    【讨论】:

    • 是的,我看过它们。虽然他们没有回答我的问题。正如我所提到的,我想使用 boto create_function 方法来接受 base-64 编码的 zip 文件的字节数组。
    • 其实IIUC可以直接传字节,你试过了吗?github.com/boto/boto3/issues/201
    • 这很有用!那么剩下的部分是如何压缩文件然后以优雅的方式从中获取字节?理想情况下,我正在考虑在没有中间文件的情况下在内存中完成所有操作。
    • 我编辑了答案,以便它可以为您提供必要的指针并供将来参考。
    • kappa 中有代码可以做到这一点。也许它会很有用。具体来说,结帐:github.com/garnaat/kappa/blob/develop/kappa/function.py#L121
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    相关资源
    最近更新 更多