python-3.x - 如何使用 Boto3 指定 Lambda 函数应在 S3 中查找依赖项的位置
问题描述
我想使用 Boto3 将脚本上传到 S3,创建一个指定 S3 密钥的 Lambda 函数来运行脚本。为了加快这个过程,我还会在 S3 中预先存储一些 Python 依赖项,我如何指定 lambda 函数应该在哪里查找这些依赖项?另外,如何使用 Boto3 在执行函数后从 S3 中删除脚本?
我的代码将如下所示:
import zipfile
archive = zipfile.ZipFile('function.zip', 'w')
zip.write('index.js', 'path/on/disk/index.js')
.......
client.put_object(Body=archive, Bucket='bucket-name', Key='function.zip')
lambda_Client = boto3.client('lambda', aws_access_key_id=accessKey,
aws_secret_access_key=secretKey,region_name=region)
response = lambda_Client.create_function(
Code={
'S3Bucket': 'bucket-name',
'S3Key': 'function.zip', #how can i create or fetch this S3Key
},
Description='Process image objects from Amazon S3.',
FunctionName='function_name',
Handler='index.handler',
Publish=True,
Role='arn:aws:iam::123456789012:role/lambda-role',
Runtime='nodejs12.x',
)
解决方案
我假设“依赖项”是指第三方 Python 包。
Lambda 不会为您的 Python Lambda 函数获取依赖项。当您最初创建Lambda 函数或随后更新Lambda 函数时,您需要打包依赖项。
要删除 Lambda 函数,请使用delete_function。要从 S3 中删除脚本或其他脚本,请使用delete_object。
如果通过“依赖项”,您只是指您存储在 S3 中的资产,例如 JSON 文件或其他,则使用 boto3 的 S3 功能(例如get_object)来检索它们。
推荐阅读
- c# - WPF 数据网格只有在双击时才可编辑
- vue.js - 未显示 Vuetfiy 选项卡
- python - 检查某个文件夹中是否有任何图像重复的最高效(比我的更好)方法?
- python - Gstreamer 不在 Ubuntu 18.04 VM 上发送“准备窗口句柄”消息
- python - 从存储的文本文件中搜索 Python 中的命令
- sql - 语法错误之间的 CASE 表达式
- node.js - 如何为无头 chrome 设置静态 IP
- loops - Scilab:无效索引
- proguard - 由于 proguard 规则,生成签名 APK 时出错
- python - Python:excel中不同单元格中的每个元素