在Python中,我们通常处理这样的目录:
MODEL_DIR = os.path.join(ROOT_DIR, "logs")
但是,假设我在 S3 存储桶内有相同的日志目录,我该如何使用 boto3
将 S3 上的路径获取为 str
?
用例:
我正在编写一个 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 加载模型。
关于python - 如何使用 boto3 在 Python 中获取 S3 目录作为 os.path?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51911088/