使用 Cognito 凭据从 API 网关调用的 Lambda 获取用户
Getting user from Lambda called by API Gateway using Cognito credentials
使用 Cognito 凭据从浏览器调用我的 API 端点不会为发出请求的用户提供 lambda 函数。
我正在为端点使用 AWS_IAM 身份验证
这是我的 lambda 中的请求:
module.exports.addItem = (event, context, done) => {
console.log(event.identity);
/**
accountId: "",
apiKey: "",
caller: "",
cognitoAuthenticationProvider: "",
cognitoAuthenticationType: "",
cognitoIdentityId: "",
cognitoIdentityPoolId: "",
sourceIp: "213.229.49.108",
user: "",
userAgent: "Mozilla/5.0 (X11; Linux x86_6....",
userArn: ""
*/
};
我想为用户执行一些dynamodb 操作。如何获取用户?
您有 2 个选项来获取您的 Lambda 函数的 Cognito 身份 ID:
在控制台的 API 方法上检查 "use caller credentials"。这将告诉 API Gateway 使用 Cognito 凭证调用 Lambda,这意味着您的 Lambda 函数的 context.identity 将包含该信息。 注意您的 Cognito 角色需要权限才能调用您的 Lambda 函数才能正常工作。
使用 mapping template 将值映射到您的事件负载中。
您似乎在尝试执行 #2,但您尚未包含映射模板,请确保其中包含所需的值。此外,确保您已部署启用 IAM 身份验证的更改,并且您正确地签署了请求。
使用 Cognito 凭据从浏览器调用我的 API 端点不会为发出请求的用户提供 lambda 函数。
我正在为端点使用 AWS_IAM 身份验证
这是我的 lambda 中的请求:
module.exports.addItem = (event, context, done) => {
console.log(event.identity);
/**
accountId: "",
apiKey: "",
caller: "",
cognitoAuthenticationProvider: "",
cognitoAuthenticationType: "",
cognitoIdentityId: "",
cognitoIdentityPoolId: "",
sourceIp: "213.229.49.108",
user: "",
userAgent: "Mozilla/5.0 (X11; Linux x86_6....",
userArn: ""
*/
};
我想为用户执行一些dynamodb 操作。如何获取用户?
您有 2 个选项来获取您的 Lambda 函数的 Cognito 身份 ID:
在控制台的 API 方法上检查 "use caller credentials"。这将告诉 API Gateway 使用 Cognito 凭证调用 Lambda,这意味着您的 Lambda 函数的 context.identity 将包含该信息。 注意您的 Cognito 角色需要权限才能调用您的 Lambda 函数才能正常工作。
使用 mapping template 将值映射到您的事件负载中。
您似乎在尝试执行 #2,但您尚未包含映射模板,请确保其中包含所需的值。此外,确保您已部署启用 IAM 身份验证的更改,并且您正确地签署了请求。