【问题标题】:How do I import Opensearch from opensearchpy?如何从 opensearchpy 导入 Opensearch?
【发布时间】:2022-01-05 23:05:41
【问题描述】:

这里是社区的新手。我没有发现讨论过这个问题,所以我可能遗漏了一些非常明显的东西。谢谢!

Python代码sn-p:

import botocore
import time
import os
import os.path
import sys
import io
import urllib.parse
import json
import base64

from io import BytesIO
from opensearchpy import OpenSearch, RequestsHttpConnection
from requests_aws4auth import AWS4Auth

from s3transfer.manager import TransferManager
from trp import Document

error code from lambda while using s3 put test scenario

【问题讨论】:

  • 嗯,看起来这个错误是有道理的。至少,opensearchpy 不是我认识的内置模块。
  • 您需要压缩依赖项并将压缩文件部署到 lambda。本质上,lambda 需要在代码结构的根级别查看 opensearchpy 文件夹,否则导入会导致错误,因为 lambda 没有它(请注意,像 botocore 这样的库已经内置在 lambda 中)
  • opensearchpy 应该是 aws 的 elasticsearch 的继任者。这是开发指南,但我找不到任何可操作的内容:docs.aws.amazon.com/opensearch-service/latest/developerguide/…
  • rv.kvetch 是对的——需要 lambda 中的层。我的 zip 文件目录结构错误,需要包含依赖库 1. 将 pip 安装到目标目录 2. 将这些文件夹/文件放入 python 文件夹 3. 压缩 python 文件夹,重命名,上传到 lambda 层跨度>

标签: python amazon-web-services elasticsearch aws-lambda opensearch


【解决方案1】:

评论在上面,但要回答。

  1. 使用“python”文件夹创建层目录

  2. 将库安装到该 python 文件夹中

    $ py -m pip install opensearch-py --target lambda-layer/python/

  3. 压缩 python 文件夹并重命名为相关内容 (opensearch-py.1.0.0.zip)

  4. 在 lambda 中创建层,上传 zip 文件

  5. 向 lambda 函数添​​加层

  6. 胜利

那里有很多关于层的不同文件目录结构的信息,但fine folks at amazon wrote it down。我只是错过了将所有相关附属库包含在 zip 中以使其正常工作的需要。

【讨论】:

    猜你喜欢
    • 2021-12-12
    • 2021-04-22
    • 2022-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-11
    • 1970-01-01
    • 2011-05-11
    相关资源
    最近更新 更多