【问题标题】:Cognito Identity Not Passed Into AWS Lambda functionCognito 身份未传递到 AWS Lambda 函数
【发布时间】:2016-10-17 03:28:33
【问题描述】:

我已设置适用于 iOS 的 AWS 开发工具包以使用 Amazon Cognito 进行身份验证。这是执行此操作的代码:

let credentials = AWSCognitoCredentialsProvider(regionType: .USEast1,
                                                    identityPoolId: IdentityManager.identityPoolId,
                                                    identityProviderManager: self)

AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = AWSServiceConfiguration(region: .USEast1,
                                                                                                    credentialsProvider: credentials)

我可以使用此凭据提供程序成功获取身份 ID。从这里我尝试设置一个 API Gateway 生成的客户端来调用我的 lambda 函数。

let client = APIGatewayClient.defaultClient()

client.endpointGet() { task in


}

我已确认APIGatewayClient 的configuration 属性附加了AWSCognitoCredentialsProvider,并逐步检查了请求签名代码以确保其请求得到正确签名。

这是客户端调用的 Lambda 函数:

exports.handler = function(event, context) {

    console.log('context: ' + require('util').inspect(context));

    if (context.identity) {

        context.succeed("found cognito identity")

    } else {

        return context.fail(new Error("cognito identity not found"))
    } 
}

问题是context.identity 为空,即使请求是使用AWSCognitoCredentialsProvider 签名的。我需要采取哪些额外步骤来确保 Lambda 识别出我的请求是使用 Cognito 身份签名的并填充 context 对象中的相关字段?

【问题讨论】:

    标签: ios aws-lambda amazon-cognito aws-api-gateway


    【解决方案1】:

    为了在通过 API 网关调用的 lambda 函数中使用 Cognito 身份对象,您需要在 API 网关资源的 API 网关“集成请求”页面上启用“使用调用方凭据调用”。这将在 lambda 上下文中注入身份对象,其中包含 cognitoIdentityId 和 cognitoIdentityPoolId。

    一些类似的帖子:

    所以:AWS API Gateway: How to pass IAM identity to Lambda function?

    AWS 论坛:https://forums.aws.amazon.com/message.jspa?messageID=669060#669060

    希望这会有所帮助。

    【讨论】:

    • 嗯我试过了它不起作用我回来{"callbackWaitsForEmptyEventLoop":true,"logGroupName":"/aws/lambda/ugc-post","logStreamName":"2017/10/31/[$LATEST]6f9e519e33fe4d3f96f0ab88e2111068","functionName":"ugc-post","memoryLimitInMB":"128","functionVersion":"$LATEST","invokeid":"fa474ffc-be53-11e7-a4d1-c3a02d8ef22d","awsRequestId":"fa474ffc-be53-11e7-a4d1-c3a02d8ef22d","invokedFunctionArn":"arn:aws:lambda:eu-west-1:247237293916:function:ugc-post"},通过从生成的框架(iOS)调用
    猜你喜欢
    • 1970-01-01
    • 2019-09-01
    • 2015-10-17
    • 2016-12-22
    • 2019-11-18
    • 2017-07-26
    • 2018-11-13
    • 2014-10-04
    • 2016-10-02
    相关资源
    最近更新 更多