AWS Lambda无法调用Cognito Identity – IAM Role

我已经得到了一点在我的本地机器上运行的JavaScript,但是在Lambda中不起作用。

它在调用cognitoidentity.getOpenIdTokenForDeveloperIdentity时超时

 { "errorMessage": "2016-03-17T16:50:25.181Z 4fa3fa5a-ec60-11e5-8316-415fa39313da Task timed out after 15.00 seconds" } 

在本地工作正常(调用AWS生产服务),所以它必须是我已经附加到Lambda的策略。

以下是我的政策:

AmazonCognitoDeveloperAuthenticatedIdentities

AWSLambdaVPCAccessExecutionRole

这也是我的习惯之一:

  { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "mobileanalytics:PutEvents", "cognito-sync:*" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:eu-west-1:myaccountid:function:users_login" ] } ] } 

Lambda ARN直接从Lambda屏幕上复制。 任何想法缺less什么?

这一定是我所附的政策

不,如果是这样,你会得到一个权限被拒绝的错误,而不是超时。

看起来您的Lambda函数具有VPC访问权限。 您需要为您的VPCconfiguration一个NAT网关,以使Lambdafunction能够访问VPC之外的任何内容,包括Cognito等AWS服务。