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

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

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

谢谢。

【问题讨论】:

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

标签: python amazon-web-services aws-lambda amazon-elastic-beanstalk


【解决方案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 没问题。希望它会成功。如果有什么,请随时询问。
猜你喜欢
  • 2019-02-13
  • 2018-02-18
  • 2016-03-08
  • 2021-05-30
  • 2020-10-01
  • 2017-11-22
  • 2019-02-03
  • 2019-06-05
  • 2012-03-15
相关资源
最近更新 更多