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

问题描述 投票:0回答:1

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

所以,我现在想做的是在我的应用脚本中调用我的lambda函数,但是我不确定如何继续。我应该使用API​​网关吗?我看到an article in AWS docs似乎在做类似的事情,但看起来并不那么简单。有没有更简单的方法来处理请求或boto3之类的东西?任何输入将不胜感激。

谢谢。

python amazon-web-services aws-lambda amazon-elastic-beanstalk
1个回答
0
投票

您提到的文章在lambda前面使用了API网关。这是调用lambda 匿名的推荐方法(无AWS凭证)。例如,在浏览器中使用JavaScript调用该函数时。

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

更简单的方法包括将lambda 调用权限添加到EB实例配置文件。假设您使用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将知道如何正确地从配置文件中获取凭据,并且不需要您或您的脚本采取任何特殊措施。

© www.soinside.com 2019 - 2024. All rights reserved.