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