我正在尝试构建一个具有“高级”功能的应用程序,以将文件上传到s3 .
现在,用户使用OAuth / Cognito登录 . 有一个dynamoDB表,其中包含基于其cognito id的用户数据 . 该dynamodb用户数据指定用户是否是高级用户 .
我有一个API网关 endpoints 绑定到lambda函数,该函数创建预先签名的s3上传URL .
在返回预先签名的URL之前,如何确保调用API网关的个人已登录并且是高级用户?
创建Lambda custom authorizer,在将请求授权给API网关 endpoints 之前验证用户是否为"premium"用户 . 此功能将在授权访问之前在DynamoDB中查找用户 .
看起来您正在使用Cognito Federated Identities,您可以从API网关后面的Lambda函数访问Cognito Identity Id,并在您的dynamo表中进行查找 .
要访问Cognito Identity Id,您必须在API的API网关“集成请求”页面上“调用调用者凭据” .
设置完成后,如果您使用Cognito的凭据调用API,则lambda上下文将包含一个新的“identity”结构,其中包含“cognitoIdentityId”和“cognitoIdentityPoolId”
2 回答
创建Lambda custom authorizer,在将请求授权给API网关 endpoints 之前验证用户是否为"premium"用户 . 此功能将在授权访问之前在DynamoDB中查找用户 .
看起来您正在使用Cognito Federated Identities,您可以从API网关后面的Lambda函数访问Cognito Identity Id,并在您的dynamo表中进行查找 .
要访问Cognito Identity Id,您必须在API的API网关“集成请求”页面上“调用调用者凭据” .
设置完成后,如果您使用Cognito的凭据调用API,则lambda上下文将包含一个新的“identity”结构,其中包含“cognitoIdentityId”和“cognitoIdentityPoolId”