gpt4 book ai didi

python - 在 AWS Lambda 中使用存储在 S3 上的 pickled 文件

转载 作者:行者123 更新时间:2023-12-01 02:28:02 25 4
gpt4 key购买 nike

我目前正在开发 Amazon Web Services Lambda 函数,我需要利用我在本地创建但现在存储在 S3 中的 sklearn 文件。我一直对如何实际执行此操作感到困惑,我尝试了 boto3 文档中的几种不同方法,但这会导致超时错误:

import boto3
import pickle
s3 = boto3.client("s3", region_name="us-west-1")
response = s3.get_object(Bucket="mybucket", Key="bin_files/scaler.pkl")
loaded_file = pickle.load(response["Body"])

另一方面,这样做会导致文件未找到错误:

 with open(key, 'wb') as data:
s3.Bucket(event['bucket']).download_fileobj(key, data)


"errorMessage": "[Errno 2] No such file or directory:
'bin_files/scaler.pkl'"

有人对如何做到这一点有任何想法或建议吗?

最佳答案

正确代码:

 with open('scaler.pkl', 'wb') as data:
s3.Bucket('bucket').download_fileobj(key, data)

如果您想将 s3 文件下载到当前目录,那么您只需将文件名传递给文件 open() 方法,然后不是整个 key 。在你的情况下,你正在通过 bin_files/scaler.pkl作为文件名

在你的例子中,python 代码将查找 bin_files当前工作目录中的目录(执行 boto 脚本的目录)并尝试写入 scaler.pkl里面bin_files目录。由于该目录不存在,因此它会抛出 [Errno 2] No such file or directory错误。

如果将PATH添加到文件名,则应确保整个PATH存在并具有适当的目录权限。

关于python - 在 AWS Lambda 中使用存储在 S3 上的 pickled 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47170876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com