我正在使用AWS amplify创建一个应用程序,用户可以使用私有或公共文件访问级别上传图像,如文档中所述。除此之外,我已经实现了一个lambda函数,根据请求通过API网关修改图像并返回到修改后的图像的链接。
我想要的是给定用户应该能够调用API并仅修改他自己的图像,而不是其他用户的图像;即允许AWS lambda函数使用来自cognito用户的执行角色。如果我允许lambda函数访问S3存储桶中的所有数据,那么它工作正常 - 但我不希望用户能够访问其他用户的图像。
我已经有一段时间了,尝试不同的事情无济于事。
现在我已经将API与用户池集成在一起,如下所述:https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-enable-cognito-user-pool.html
然后我试着遵循这个指南:https://aws.amazon.com/premiumsupport/knowledge-center/cognito-user-pool-group/
哪个不起作用,因为“cognito:roles”不存在于lambda_handler的事件变量中(可能是因为没有用户池组?)。
在AWS Amplify应用程序中,正确的方法是什么?主要是,我遵循了这个指南:https://aws.amazon.com/premiumsupport/knowledge-center/cognito-user-pool-group/
使用API网关请求映射并检查Lambda本身的权限: