gpt4 book ai didi

amazon-s3 - 允许 API 用户使用 Cognito 身份池中的执行角色运行 AWS Lambda

转载 作者:行者123 更新时间:2023-12-01 05:52:25 27 4
gpt4 key购买 nike

我正在使用 AWS amplify 创建一个应用程序,用户可以在其中使用私有(private)或公共(public)文件访问级别上传图像,如文档中所述。除此之外,我还实现了一个 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/

哪个不起作用,因为 lambda_handler 的事件变量中不存在“cognito:roles”(大概是因为没有用户池组?)。

在 AWS Amplify 应用程序中执行此操作的正确方法是什么?
首先,我遵循了本指南:
https://aws.amazon.com/premiumsupport/knowledge-center/cognito-user-pool-group/

最佳答案

在 Lambda 本身中使用 API Gateway 请求映射和检查权限 :

  • 使用 API Gateway 请求映射传递 context.identity.cognitoIdentityId给 lambda 。只是它应该是与映射的 Lambda 集成(而不是代理集成)。另一个限制是 API 请求应该是 POST,对于 GET,如果将 cognitoIdentityId 映射到 query string 也是可能的。 .
  • Lambda 可以访问 S3 中的所有文件
  • 在 Lambda 本身中实现访问控制检查。 Lambda 可以读取 S3 中文件的所有权限。然后查看所有者是否是 Cognito 用户。
  • 关于amazon-s3 - 允许 API 用户使用 Cognito 身份池中的执行角色运行 AWS Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52629576/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com