[英]best way to integrate Elastic Beanstalk with AWS Lambda in Python
最近几天,我一直在尝试充分了解 AWS 的产品,以便实施一个半大型应用程序。 我的结论是,我应该将我的文件存储在 S3 中,在 Lambda 上执行重任务,应用程序本身应该通过 Elastic Beanstalk 运行。
所以,我现在要做的是在我的应用程序脚本中调用我的 lambda 函数,但我不确定如何继续。 我应该使用 API 网关吗? 我在 AWS docs 上看到一篇文章似乎做了类似的事情,但它似乎不是很简单。 有没有更简单的方法通过请求或 boto3 或类似的东西? 任何输入将不胜感激。
谢谢。
你提到的文章在lambda前面使用API网关。这是匿名调用lambda的推荐方式(没有aws凭据)。 例如,在浏览器中使用 JavaScript 来调用 function。
但是,如果您想从 EB 环境调用您的 lambda function,即从运行在 EB 实例上的 python,那么有一个更简单的方法。
更简单的方法包括向 EB 实例配置文件添加 lambda调用权限。 假设您使用默认配置文件aws-elasticbeanstalk-ec2-role
,您可以将以下内联策略添加到其中:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "lambda:InvokeFunction",
"Resource": "*"
}
]
}
这将允许任何使用 boto3(或任何其他 aws sdk)的脚本通过EC2 的 IAM 角色调用您的 function。
有了这个,您就可以像通常在本地工作站上那样在 EB 实例上使用boto3
来调用boto3
将知道如何从配置文件中正确获取凭据,并且您或您的脚本不需要执行任何特殊操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.