python - 如何使用 boto3 在 Python 中将 S3 目录作为 os.path 获取?
问题描述
在 Python 中,我们通常处理这样的目录:
MODEL_DIR = os.path.join(ROOT_DIR, "logs")
但是,假设我在 S3 存储桶中有相同的日志目录,我应该如何获取 S3 上的路径str
using boto3
?
用例:
我正在编写一个 AWS Lambda 函数,它将权重从s3
存储桶加载到Keras
模型以返回预测。
解决方案
如果 Keras 直接支持 S3,那么请阅读 Keras 文档并按照它所说的去做。
如果 Keras 支持从内存中加载模型数据,则将文件从 S3 读取到内存中并从那里加载模型数据。例如:
import boto3
s3 = boto3.client('s3')
obj = s3.get_object(Bucket='mybucket', Key='data/input.csv')
contents = obj['Body'].read()
# model = load_model(contents)
如果 Keras 需要本地文件,则将文件从 S3 下载到 Lambda 中的 /tmp,然后从那里加载模型数据。例如:
import boto3
s3 = boto3.resource('s3')
s3.meta.client.download_file('mybucket', 'data/input.csv', '/tmp/input.csv')
# model = load_model('/tmp/input.csv')
我怀疑后者是您需要的,加载多个文件只需将每个文件从 S3 下载到 /tmp,然后从 /tmp 加载模型。
推荐阅读
- javascript - 如何获取 Javascript 中第一个子元素的值?
- python - 如何在python中找到无网格数据的梯度?
- networkx - 使用 ipycytoscape(和 networkx)绘制图形
- java - Logback:部署在 tomcat 服务器上的 resteasy java 应用程序中的日志记录问题
- django - 如何更新 Django 中的数据库?
- python - 根据 pandas 中的行值创建新列
- ionic-framework - 如何在移动应用程序中使 Angular Material 的 mat-select 换行?
- javascript - 用于打开/关闭一排复选框的 Google 表格按钮
- javascript - 如何将此数据分组为可过滤
- javascript - 如何使布尔状态设置器可重用