使用Cognito从API网关方法调用Lambda函数时,如何仅授予对用户特定资源(DynamoDB,S3)的访问权限

时间:2019-06-30 10:19:25

标签: amazon-web-services aws-lambda amazon-dynamodb aws-api-gateway amazon-cognito

我正在使用AWS(Lambda,Cognito,API Gateway,DynamoDB和S3)创建无服务器后端。

我在DynamoDB上有一个用户表和一个用于访问该数据的API(Lambda和API网关)。我想基于Cognito用户凭据在行级别授予对表的访问权限。

我该怎么做?我应该使用IAM策略还是应该检查Cognito中的ID是否等于Lambda中的数据库表行ID?

1 个答案:

答案 0 :(得分:1)

您可以使用cognito授予对s3和DynamoDb中用户特定数据的访问权限。身份池中的 sub 变量(与用户池中的变量不同)可以动态写入到经过身份验证的角色策略中。因此,如果您在dynamodb文档中具有sub变量,并且作为s3对象的前缀(基本上是保存文件的“文件夹”名称),则可以使用单个策略根据登录的用户来授予访问权限。 / p>

您可以在以下博客文章中找到完成此操作的完整步骤。

https://aws.amazon.com/blogs/mobile/building-fine-grained-authorization-using-amazon-cognito-user-pools-groups/