amazon-s3 - 使用 boto3 键错误从 S3 下载文件
问题描述
我正在尝试从 S3 下载 joblib 文件,但出现密钥格式错误..
这是我的文件的 S3 路径:
"s3://v1/v2/v3/v4/model.joblib"
这是我的代码:
import boto3
bucketname = "v1"
key = "v2/v3/v4"
filename = "model.joblib"
s3 = boto3.resource('s3')
obj = s3.Object(bucketname, key)
body = obj.get()['label_model.joblib'].read()
最终我希望能够做到:
from joblib import load
model = load("model.joblib")
我得到的错误:
NoSuchKey: An error occurred (NoSuchKey) when calling the GetObject operation: The specified key does not exist.
解决方案
您正在尝试访问没有文件名的文件。
你的代码是:
import boto3
bucketname = "v1"
key = "v2/v3/v4"
filename = "model.joblib"
s3 = boto3.resource('s3')
obj = s3.Object(bucketname, key)
body = obj.get()['label_model.joblib'].read()
但是您需要将文件名添加到 key 变量中。这是从 s3 下载文件的示例:
bucketname = "v1"
key = "v2/v3/v4"
filename = "model.joblib"
s3 = boto3.resource('s3')
bucket = s3.Bucket(bucketname)
with open('filename', 'wb') as f:
bucket.download_fileobj(f'{key}/{filename}', f)
推荐阅读
- c# - 使用 C# 和 AWS 证书保护 WebSocket 服务器
- jinja2 - Jinja - 当值超过指定的字段宽度时如何强制截断
- javascript - JavaScript - 让博客文章有自己的 url 而不仅仅是参数
- opencv - 即使我在处理过程中浪费了时间,我如何才能获得实时 OpenCV 当前帧?
- firebase - 从 Firebase 登录返回的对象
- r - 替换类似的拼写错误的单词
- windows - 如何判断我的 Rust 编译器正在使用哪个 Windows 工具链?
- r - Rvest 返回空表
- javascript - 将javascript数组映射到高度间隙数组
- c# - c# 替换表达式“除非”