我在 AWS S3 Bucket 内的嵌套目录中有一个 pickle 文件,但我无法将它与boto3
库一起加载以与 AWS Lambda 一起使用。
我试图按照这个问题的答案,但没有人工作。到目前为止,这是我的代码:
s3 = boto3.resource('s3')
source_bucket = "source_bucket_name"
key = "folder1/pickle_file.p"
response = s3.Bucket(source_bucket).Object(key).get()
body_string = response['Body'].read()
try:
loaded_pickle = pickle.loads(body_string)
except Exception as e:
print(e)
将此函数加载到 AWS 时,我收到以下错误消息:
embedded null byte
除了我在评论中所说的之外,您的代码似乎很好。也许你上传到 S3 是不正确的。下面是完整的工作示例:
import pickle
import boto3
mylist = [1,2,3]
# create pickle file
with open('/tmp/pickle_file.p', 'wb') as f:
pickle.dump(mylist, f)
# upload to s3
source_bucket='source_bucket_name'
key = "folder1/pickle_file.p"
with open('/tmp/pickle_file.p', 'rb') as f:
response = boto3.client('s3').put_object(
Body=f,
Bucket=source_bucket,
Key=key)
print(response)
# read back from s3
s3 = boto3.resource('s3')
response = s3.Bucket(source_bucket).Object(key).get()
body_string = response['Body'].read()
try:
loaded_pickle = pickle.loads(body_string)
except Exception as e:
print(e)
# should print out `mylist`
print(loaded_pickle)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句