最近几天,我一直在试图充分了解AWS的产品,以实施半大型应用程序。我的结论是,我应该将文件存储在S3中,对Lambda执行繁重的工作,并且应用程序本身应通过Elastic Beanstalk运行。
所以,我现在想做的是在我的应用脚本中调用我的lambda函数,但是我不确定如何继续。我应该使用API网关吗?我看到an article in AWS docs似乎在做类似的事情,但看起来并不那么简单。有没有更简单的方法来处理请求或boto3之类的东西?任何输入将不胜感激。
谢谢。
您提到的文章在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
将知道如何正确地从配置文件中获取凭据,并且不需要您或您的脚本采取任何特殊措施。