AWS boto3:未知服务错误:未知服务:"apigatewaymanagementapi"



我在AWS中面临boto3模块的奇怪问题。我正在使用Lambda功能编写无服务器框架。我正在使用AWS Boto3模块&在Python中以下方的代码运行。在本地运行时,代码执行成功,但在AWS中执行时会因未知服务而失败。

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函数。

不幸的是,这些解决方案都没有。请建议有关此问题的替代解决方案。

您是正确的,lambda中的boto3库是您本地计算机上的内容。您可以创建一个lambda层,该层在Lambda软件包中包含较新版本的boto3或boto3。

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

https://geektopia.tech/post.php?blogpost=create_lambda_layer_pythonhttps://geektopia.tech/post.php?blogpost=create_lambda_package_python

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中过时的肉毒杆菌是罪魁祸首。一种解决方案可能是在Lambda软件包中包括最新的Botocore。例如,使用Python要求插件:

serverless plugin install -n serverless-python-requirements

并创建一个包含botocore==1.12.133

requirements.txt文件

(而不是1.12.133,您可能需要在阅读此内容时使用最新版本)

最新更新