Amazon web services AWS API网关-如何进行S3 Cognito用户池受限文件夹访问?

Amazon web services AWS API网关-如何进行S3 Cognito用户池受限文件夹访问?,amazon-web-services,aws-lambda,aws-api-gateway,amazon-cognito,Amazon Web Services,Aws Lambda,Aws Api Gateway,Amazon Cognito,我的应用程序使用Cognito用户池来限制访问,这样每个用户都可以在“私有”存储桶中读/写自己的个人文件夹。在“public”bucket中,它是相同的,只是每个人都有对所有内容的读访问权限,只有对自己的文件夹有写访问权限。当通过javascripts3sdk访问时,这一切都可以正常工作 我现在正试图通过API网关与访问S3的Lambda函数对话来实现访问 问题在于,Lambda函数似乎没有使用cognitouserpool标识。如果我给Lambda函数角色totals3访问权,那么该函数能够很

我的应用程序使用Cognito用户池来限制访问,这样每个用户都可以在“私有”存储桶中读/写自己的个人文件夹。在“public”bucket中,它是相同的,只是每个人都有对所有内容的读访问权限,只有对自己的文件夹有写访问权限。当通过javascripts3sdk访问时,这一切都可以正常工作

我现在正试图通过API网关与访问S3的Lambda函数对话来实现访问

问题在于,Lambda函数似乎没有使用cognitouserpool标识。如果我给Lambda函数角色totals3访问权,那么该函数能够很好地访问S3,并且该函数可以工作。但是,如果如上所述,我有适当的角色策略来限制Cognito用户池ID,那么I get访问被拒绝

在我看来,Userpool Cognito标识不是Lambda函数所使用的

有人能建议此设置的正确配置吗


谢谢

API网关和Lambda不自动支持此用例

Lambda函数使用其执行角色的标识运行,因此其上下文不会包含来自Cognito用户池的标识属性。(Lambda函数中的context对象包含Lambda透视图中的上下文。)

API网关通过API网关内的$context.authorizer.claims变量公开Cognito用户池标识信息。要从Lambda函数中访问此信息,必须在API网关中修改主体映射模板,以便通过请求主体将所需数据从$context.authorizer.claims传递给Lambda函数。您可以使用Lambda函数,然后像其他字段一样从请求主体读取此信息

在这个场景中,没有任何机制可以根据每个Cognito用户自动将权限限制到S3 bucket/对象。您可以在Lambda函数中实现逻辑,以使用自定义代码强制执行它