AWS Lambda 无法调用 Cognito Identity - IAM 角色
Posted
技术标签:
【中文标题】AWS Lambda 无法调用 Cognito Identity - IAM 角色【英文标题】:AWS Lambda can't call Cognito Identity - IAM Role 【发布时间】:2016-07-04 04:28:36 【问题描述】:我有一些 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 屏幕复制的。有什么想法吗?
【问题讨论】:
【参考方案1】:一定是我附加的政策
不,如果是这种情况,您将收到权限被拒绝错误,而不是超时。
您的 Lambda 函数似乎具有 VPC 访问权限。您需要为您的 VPC 配置 NAT 网关,以便 Lambda 函数能够访问 VPC 之外的任何内容,包括 Cognito 等 AWS 服务。
【讨论】:
你做了什么来修复它的任何例子? @NeoPix 这篇文章帮助我摆脱了类似的情况:https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/以上是关于AWS Lambda 无法调用 Cognito Identity - IAM 角色的主要内容,如果未能解决你的问题,请参考以下文章
使用 Lambda 授权方的 AWS Cognito 和 API 网关
有啥方法可以在 AWS Lambda 中获取 Cognito 用户名?
AWS API Gateway + Cognito 用户池授权方 + Lambda - 我需要设置哪些 HTTP 标头和权限?