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和您的定制服务