簡體   English   中英

Cognito身份未傳遞到AWS Lambda函數

[英]Cognito Identity Not Passed Into AWS Lambda function

我已經設置了適用於iOS的AWS SDK,以使用Amazon Cognito進行身份驗證。 這是執行此操作的代碼:

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

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

我可以使用此憑據提供程序成功獲取身份標識。 從這里我嘗試建立一個API網關生成的客戶端來調用我的lambda函數。

let client = APIGatewayClient.defaultClient()

client.endpointGet() { task in


}

我已經確認APIGatewayClient已將AWSCognitoCredentialsProvider附加到其configuration屬性,並逐步執行請求簽名代碼以確保其請求得到正確簽名。

以下是客戶端調用的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"))
    } 
}

問題是即使請求是使用AWSCognitoCredentialsProvider簽名的, context.identity也是null。 我需要采取哪些其他步驟來確保Lambda識別我的請求是使用Cognito身份簽名並填充context對象中的相關字段?

為了使您的lambda函數中的Cognito標識對象可用,該函數通過API網關調用,您需要在API網關資源的API網關“集成請求”頁面上啟用“調用調用者憑據”。 這將在lambda上下文中注入標識對象,其中將包含cognitoIdentityId和cognitoIdentityPoolId。

一些類似的帖子:

SO: AWS API Gateway:如何將IAM身份傳遞給Lambda函數?

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

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM