Api 加载自定义模型
例如:Api 加载自定义模型,api,session,model,boto3,Api,Session,Model,Boto3,例如: session=boto3.session() client=session.client('custom-service') 我知道我可以使用~/.aws/models下的API定义创建json,botocore将从那里加载它。问题是我需要在AWS Lambda函数上完成它,这看起来是不可能的 正在寻找一种方法来告诉boto3自定义json api定义在哪里,以便它可以从定义的路径加载 谢谢我只有部分答案。有一些关于botocore的文档,这是读取模型文件的部分。在一篇关于从ZIP存
session=boto3.session()
client=session.client('custom-service')
我知道我可以使用~/.aws/models下的API定义创建json,botocore将从那里加载它。问题是我需要在AWS Lambda函数上完成它,这看起来是不可能的
正在寻找一种方法来告诉boto3自定义json api定义在哪里,以便它可以从定义的路径加载
谢谢我只有部分答案。有一些关于
botocore
的文档,这是读取模型文件的部分。在一篇关于从ZIP存档加载模型的讨论中,它将ZIP提取到一个临时文件系统位置,然后将加载程序搜索路径扩展到该位置。看起来您无法基于API直接从内存加载模型数据,但Lambda确实在/tmp
中为您提供了一些临时空间
以下是重要的几点:
import boto3
session = boto3.Session()
session._loader.search_paths.extend(["/tmp/boto"])
client = session.client("custom-service")
/tmp/boto
的目录结构需要遵循资源加载器文档。主模型文件需要位于/tmp/boto/custom service/yyyy-mm-dd/service-2.json
该问题还提到,可以使用
会话。注册组件
替换替代加载程序,因此,如果您想编写一个直接从内存返回模型的废弃加载程序,您也可以尝试。我没有关于如何做这件事的任何信息。只是添加了更多细节:
导入boto3
进口拉链
导入操作系统
s3\u client=boto3.client('s3'))
s3_client.download_文件('your-bucket'、'model.zip'、'/tmp/model.zip'))
os.chdir('/tmp')
使用zipfile.zipfile('model.zip','r')作为存档:
archive.extractall()文件
session=boto3.session()
会话。_loader.search_path.extend([“/tmp/boto”])
client=session.client(“自定义服务”)
model.zip只是一个压缩文件,其中包含:
Archive: model.zip
Length Date Time Name
--------- ---------- ----- ----
0 11-04-2020 16:44 boto/
0 11-04-2020 16:44 boto/custom-service/
0 11-04-2020 16:44 boto/custom-service/2018-04-23/
21440 11-04-2020 16:44 boto/custom-service/2018-04-23/service-2.json
只需记住使用适当的lambda角色来访问S3和您的定制服务