You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python Boto3 API使用Zip包创建Lambda函数及二进制读取Zip包

用Boto3读取整个Zip包创建Lambda函数的解决方案

嗨,这事儿其实挺简单的,你完全不用去解压Zip包或者读取里面的单个文件,直接用Python以二进制模式读取整个Zip文件的内容就行,刚好符合Boto3的要求。下面给你具体的操作步骤和代码示例:

1. 二进制读取整个Zip包

Python自带的open()函数支持用rb(二进制只读)模式打开文件,调用read()方法就能一次性把整个Zip包的二进制数据读出来,这正是create_function需要的格式。

代码片段如下:

# 把这里换成你自己的Zip包路径
zip_file_path = "/Users/you/lambda-deploy.zip"

# 用with语句确保文件正确关闭,同时读取二进制数据
with open(zip_file_path, 'rb') as zip_file:
    zip_binary = zip_file.read()

2. 结合Boto3创建Lambda函数

拿到Zip的二进制数据后,直接把它放到create_function的Code参数里就行,格式是{'ZipFile': zip_binary}。下面是完整的可运行示例:

import boto3

# 初始化Lambda客户端(确保你的AWS凭证已经配置好)
lambda_client = boto3.client('lambda')

# 读取Zip包的二进制内容
zip_file_path = "/Users/you/lambda-deploy.zip"
with open(zip_file_path, 'rb') as zip_file:
    zip_binary = zip_file.read()

# 创建Lambda函数
try:
    response = lambda_client.create_function(
        FunctionName='MyTestLambda',  # 你的函数名称
        Runtime='python3.12',  # 替换成你用的Python版本
        Role='arn:aws:iam::123456789012:role/LambdaExecutionRole',  # 你的IAM角色ARN
        Handler='main.lambda_handler',  # 入口:文件名.函数名(比如你的代码在main.py里,函数是lambda_handler)
        Code={
            'ZipFile': zip_binary
        },
        Description='测试用的Lambda函数',
        Timeout=10,  # 超时时间,单位秒
        MemorySize=128  # 内存大小,单位MB
    )
    print(f"Lambda创建成功!ARN: {response['FunctionArn']}")
except Exception as e:
    print(f"创建失败:{str(e)}")

几个要注意的点

  • 确保你的AWS凭证配置正确(可以通过环境变量、~/.aws/credentials文件或者服务器的IAM角色),而且对应的IAM角色要有lambda:CreateFunction的权限。
  • Handler参数一定要和你Zip包里的代码对应,比如你的入口函数在app.py里叫handler,那就要写成app.handler。
  • 如果怕相对路径出问题,可以用os.path.abspath()来生成绝对路径,比如:
    import os
    zip_file_path = os.path.abspath("./lambda-deploy.zip")
    

内容的提问来源于stack exchange,提问作者JChao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:15:14