当前位置: 首页 > 知识库问答 >
问题:

允许API用户使用Cognito标识池中的执行角色运行AWS Lambda

郑卜鹰
2023-03-14

我正在使用AWS amplify创建一个应用程序,用户可以使用私有或公共文件访问级别上传图像,如文档中所述。除此之外,我还实现了一个lambda函数,该函数根据请求通过API网关修改图像并返回到修改图像的链接。

我想要的是,一个给定的用户应该能够调用API并只修改他自己的图像,而不能修改其他用户的图像;i、 e.允许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/

这不起作用,因为lambda_处理程序的事件变量中不存在“cognito:roles”(可能是因为没有用户池组?)。

在AWS放大器应用程序中,正确的方法是什么?首先,我遵循这个指南:https://aws.amazon.com/premiumsupport/knowledge-center/cognito-user-pool-group/

共有1个答案

邢骏
2023-03-14

使用API网关请求映射并检查Lambda本身的权限:

>

Lambda可以访问S3中的所有文件

在Lambda本身中实现访问控制检查。Lambda可以读取S3中文件的所有权限。然后查看所有者是否是Cognito用户。

 类似资料:
  • 我正在使用AWS Congito用户池进行帐户管理,其中Cognoto标识池将此用户池作为标识提供者。我用它来控制通过API网关对API的访问,API网关向Lambda发送请求。我的Lambda是使用Micronaut用Java8实现的。所有这些都很好。 在Lambda中,我从中的获得名称: 在Cognito标识符的字符串名称中返回的是什么。像这样的东西: us-east-1:xxxxe650-5

  • 一旦用户登录到Cognito,我希望使用lambda函数获取与该用户关联的当前角色。 似乎Cognito用户池或身份池将用于移动应用程序,而前端开发人员? 正确的做法是什么?代码示例总是很好,但我更喜欢寻找逻辑解决方案或文档链接。 我尝试了亚马逊认知身份(这不是我要找的),并阅读了所有(?)留档这件事,但我不能在这里连接点...

  • 我有一个混合移动应用程序使用AWS Javascript SDK与Amazon Cognito集成,使用Cognito用户池作为身份提供者。很管用。 我需要使用AWS API遍历数据以生成报告。一个关键部分是列出哪个用户(显示他们的用户名)与哪些项(与他们的认知身份相关联)相关联。

  • 我有一个Lambda函数来处理由API网关触发的POST请求。后者设置为通过Cognito用户池授权器进行授权。授权有效-如果我传递了一个用户的ID令牌,请求就会被处理,如果我不传递,我就会得到一个401。 但是,我无法在Lambda函数中获取授权用户的身份。所有的文档都让我相信它应该在上下文中,但它不是。我也无法将它映射到上下文中。此外,似乎也没有一种方法可以查询给定ID令牌的用户的用户池。 我

  • 所以在我的应用程序中,我显然想为用户提供重置密码的方法。我遇到的问题是,用户池的新留档在这个主题上非常模糊。以下是他们告诉你忘记密码流要做的事情,你可以在以下链接找到: http://docs.aws.amazon.com/cognito/latest/developerguide/using-amazon-cognito-user-identity-pools-javascript-exampl

  • 我是AWS放大器的新成员,我正在尝试制作简单的项目。 我有两个不同的前端(react)项目。其中一个是博客读者,另一个是编辑。对于这两个应用程序,我希望使用相同的DynamoDB表(并使用graphqlapi)。但是我想为每个项目使用不同的用户池。我如何实现这一点? 我在读这篇文章-https://medium.com/@fullstackpho/aws-amplify-multi-auth-gr