在 Python 中将 Elastic Beanstalk 与 AWS Lambda 集成的最佳方法

Posted

技术标签:

【中文标题】在 Python 中将 Elastic Beanstalk 与 AWS Lambda 集成的最佳方法【英文标题】:best way to integrate Elastic Beanstalk with AWS Lambda in Python 【发布时间】:2020-09-30 10:29:13 【问题描述】:

最近几天,我一直在尝试充分了解 AWS 的产品以实施一个半大型应用程序。我的结论是我应该将我的文件存储在 S3 中,在 Lambda 上执行繁重的任务,并且应用程序本身应该通过 Elastic Beanstalk 运行。

所以,我现在要做的是在我的应用脚本中调用我的 lambda 函数,但我不确定如何继续。我应该使用 API 网关吗?我看到an article in AWS docs 似乎做了类似的事情,但似乎不是很简单。有没有更简单的方法通过请求或 boto3 或类似的东西?任何意见将不胜感激。

谢谢。

【问题讨论】:

“我看到一篇文章” - 你能提供链接吗?也许它已经解释了一切并且没有更简单的方法? 添加了这篇文章。我的观点是,在 Python 应用程序上使用过 AWS Lambda 的人可能知道最好的方法 【参考方案1】:

你提到的文章在 lambda 前面使用了 API 网关。这是调用 lambda 匿名 的推荐方式(没有 aws 凭据)。例如,在浏览器中使用 javascript 调用函数时。

但是,如果您想从 EB 环境(即从运行在 EB 实例上的 python)调用 lambda 函数,那么有一种更简单的方法

更简单的方法包括向 EB 实例配置文件添加 lambda 调用权限。假设您使用default 配置文件aws-elasticbeanstalk-ec2-role,您可以在其中添加以下Inline Policy:


    "Version": "2012-10-17",
    "Statement": [
        
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "lambda:InvokeFunction",
            "Resource": "*"
        
    ]

这将允许任何使用 boto3(或任何其他 aws sdk)的脚本通过 IAM roles for EC2 调用您的函数。

有了这个,您可以在 EB 实例上使用 boto3,就像您通常在本地工作站上调用 lambda 一样。 boto3 将知道如何正确从配置文件中获取凭据,并且不需要您或您的脚本执行任何特殊操作。

【讨论】:

似乎正是我想要的,非常感谢!我会试试你的选择。我绝不是软件工程师,我非常感谢文档的链接。 @JuanC 没问题。希望它会成功。如果有什么,请随时询问。

以上是关于在 Python 中将 Elastic Beanstalk 与 AWS Lambda 集成的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

在 Elastic beanstalk 中将 ELB 设置为 Autoscaling Health Check Type

如何在 AWS Elastic Beanstalk 环境中将 Tomcat 的 URIencoding 设置为 UTF8?

为啥在 AWS Elastic BeanStalk 中将 Web 服务器更改为 nginx 时我的网页标题显示“Apache”

配置应用程序负载均衡器以在 Elastic beanstalk 中将 http 路由到 https

Spring AWS:在 Elastic Beanstalk 上部署战争时访问被拒绝错误

AWS Elastic Beanstalk 和每当 Gem