我正在使用lambdas编写投票系统。有一个lambda用于提交投票,另一个用于汇总总数。这允许很多并发选民,而不需要在每次提交后重新计算总数。
我使用serverless将REST端点发布到AWS API网关。
我试图回避的问题是执行超时限制。 API网关的限制为30秒,对于我的用例来说太低了。
所以我的方法是再次让lambda调用。周围有很多例子,但我不能让我的工作。它总是以{"message":"Forbidden"}
我已尝试lambda.invoke
以及使用请求(request.post(endpoint)
)POST到端点。在这两种情况下,我都会收到相同的错误消息,说它是被禁止的。
这个角色有AWSLambdaFullAccess,所以我很困惑为什么它在AWS内被禁止,但对世界其他地方完全开放。
更新
我将错误的权限应用于该角色:AWSLambdaInvocation-DynamoDB
应该是AWSLambdaFullAccess
。至少我现在可以使用lambda.invoke
。
仍不确定REST端点失败的原因。目前没有使用这些端点的身份验证。
无服务器配置没什么用,但现在是。
service: project-name
provider:
name: aws
runtime: nodejs6.10
region: us-west-2
timeout: 6 # The default is 6 seconds. Note: API Gateway current maximum is 30 seconds
memorySize: 512
role: arn:aws:iam::510967681306:role/lambda_basic_execution
functions:
aggregate:
handler: handler.aggregate
events:
- http:
path: aggregate
method: post
cors: true