【问题标题】:AWS boto3 : UnknownServiceError: Unknown service: 'apigatewaymanagementapi'AWS boto3:UnknownServiceError:未知服务:'apigatewaymanagementapi'
【发布时间】:2019-08-13 04:27:43
【问题描述】:

我在 AWS 中遇到了 boto3 模块的奇怪问题。我正在使用 lambda 函数编写无服务器框架。我正在使用 aws boto3 模块并在 python 中运行以下代码。代码执行在本地运行时成功,但在 AWS 中执行时失败并出现 UnknownServiceError。

client_api = boto3.client(service_name='apigatewaymanagementapi')

经过大量研究,我发现本地boto3版本是1.9.119,AWS boto3版本是1.9.42。我不太确定这是否是问题的根本原因。

我尝试在 venv 目标中安装 boto3 并使用了该参考。无论如何,AWS 中的代码执行都会失败。

我已检查是否有方法可以更新 aws boto3 版本。

我也尝试在需求文件中添加 boto3 作为外部依赖项

我还尝试使用 boto3 zip 添加图层并映射到 lambda 函数。

不幸的是,这些解决方案都不起作用。请为此问题提出替代解决方案。

【问题讨论】:

  • 我不是 python 人,但我最近在 Node js 中遇到了类似的问题。结果我不得不用我的函数打包我在本地运行的 aws-sdk 版本,所以它会使用这个版本而不是 AWS 提供的版本。如果您可以将 boto3 与您的应用程序打包在一起,您也应该能够修复它。
  • @ThalesMinussi 感谢您的回复。我正在尝试做同样的事情。但是您是否在 AWS 中使用了层或任何脚本或建议如何做到这一点。抱歉,我是 AWS 新手,无法弄清楚如何做到这一点。
  • stackoverflow.com/questions/55257580/… 那是我的问题,解决方法就是答案。如果python有一个等效的解决方案,你应该没问题。不,我根本没有使用图层。
  • 尝试使用包含相关版本的 boto3 botocore 以及您的 AWS Lambda 函数代码的部署包。怀疑 botocore 是这里的关键。

标签: amazon-web-services aws-lambda boto3 serverless botocore


【解决方案1】:

您是对的,在 lambda 中的 boto3 库比您本地机器上的库更旧。您可以在 lambda 包中创建一个包含较新版本的 boto3 或包 boto3 的 lambda 层。

这里有一些带有分步说明的链接。他们正在安装 pymysql,你可以用 boto3 替换它。否则说明完全相同。

https://geektopia.tech/post.php?blogpost=Create_Lambda_Layer_Python https://geektopia.tech/post.php?blogpost=Create_Lambda_Package_Python

【讨论】:

  • 这会导致这个错误:distutils.errors.DistutilsOptionError: can't combine user with prefix, exec_prefix/home, or install_(plat)base
【解决方案2】:

在撰写本文时,python 3.7 AWS lambda 环境是这样的:

python: 3.7.2 (default, Mar 1 2019, 11:28:42)
[GCC 4.8.3 20140911 (Red Hat 4.8.3-9)], boto3: 1.9.42, botocore: 1.12.42

通过比较 botocore 1.12.42(错误)和 1.12.133(工作正常),我发现 AWS Lambda 中过时的 botocore 是罪魁祸首。一种解决方案可能是在您的 lambda 包中包含最新的 botocore。例如使用 python 需求插件:

serverless plugin install -n serverless-python-requirements

并创建一个包含botocore==1.12.133requirements.txt 文件

(您可能希望在阅读本文时使用最新版本,而不是 1.12.133)

【讨论】:

    猜你喜欢
    • 2019-05-22
    • 2019-05-02
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-25
    • 1970-01-01
    • 2020-10-05
    相关资源
    最近更新 更多