boto3 加载自定义模型

mis*_*303 2 api session model boto3

例如:

session = boto3.Session()
client = session.client('custom-service')
Run Code Online (Sandbox Code Playgroud)

我知道我可以在 ~/.aws/models 下创建一个带有 API 定义的 json,botocore 将从那里加载它。问题是我需要在 AWS Lambda 函数上完成它,这看起来不可能做到。

寻找一种方法来告诉 boto3 自定义 json api 定义在哪里,以便它可以从定义的路径加载。

谢谢

Huc*_*kle 6

我只有部分答案。有一些关于botocore's loadermodule 的文档,它是读取模型文件的。在关于从 ZIP 档案加载模型的讨论中,提供了一个猴子补丁,它将 ZIP 提取到临时文件系统位置,然后将加载器搜索路径扩展到该位置。看起来你不能基于 API 直接从内存加载模型数据,但是 Lambda 确实给了你一些临时空间/tmp.

这是重要的部分:

import boto3
session = boto3.Session()
session._loader.search_paths.extend(["/tmp/boto"])
client = session.client("custom-service")
Run Code Online (Sandbox Code Playgroud)

目录结构/tmp/boto需要遵循资源加载器文档。主模型文件需要位于/tmp/boto/custom-service/yyyy-mm-dd/service-2.json.


该问题还提到可以使用替代加载器进行交换Session.register_component,因此如果您想编写一个直接从内存返回模型的零碎加载器,您也可以尝试这样做。我没有任何关于如何做到这一点的信息。