【问题标题】:How to allow Cognito user pool users to delete objects in S3?如何允许 Cognito 用户池用户删除 S3 中的对象?
【发布时间】:2023-03-22 08:22:02
【问题描述】:

我的移动应用程序使用 AWS Amplify,并且我在项目中有一个 Cognito 用户池和一个 S3 存储桶。用户可以将对象放入桶中没有问题,但他们不能删除。我想要做的是让每个登录用户都能够删除存储桶中的文件。

文件的路径例如:my_bucket_name/protected/eu-west-2:de55c2rf-8f1e-836d-88f9-82da662aau6dt/videos/video1

要删除,我称之为:

import { Storage } from 'aws-amplify'; 
import Amplify, { Auth } from 'aws-amplify';

。 . .

delFromS3 = async () => {
      Storage.remove('protected/eu-west-2:de55c2rf-8f1e-836d-88f9-82da662aau6dt/videos/video1')  
         .then(result => console.log('Deleted Video from S3'))
         .catch(err => console.log('Deleting video from S3 error: ', err));
  }

所以我要么需要一种方法来允许 cognito 用户池中的用户被授权删除对象。或者因为我手动知道每个用户子存储桶中文件的路径(例如/protected/eu-west-2:de55c2rf-8f1e-836d-88f9-82da662aau6dt/videos/video1),只需将其传递给我的delFromS3() 函数即可。我认为这不是存储桶策略问题。

或者,如果我需要使用身份池,我如何允许现有用户池中的所有用户使用自动生成的身份池以使他们能够在 S3 中删除?目前用户使用 Cognito 使用 Auth.signIn() 进入用户池

【问题讨论】:

    标签: amazon-web-services amazon-s3 aws-lambda amazon-cognito aws-amplify


    【解决方案1】:

    我会调用一个 API 并在您的 Lambda 中检查安全性/它是谁以及他们是否有权删除文件。您可能能够从策略中检查放大用户特征,但没有尝试过..

    但如果将来需要,额外的 api 会为您提供另一层安全性

    【讨论】:

      猜你喜欢
      • 2020-04-07
      • 2017-12-19
      • 2018-07-12
      • 2016-11-01
      • 2020-06-16
      • 2022-07-19
      • 2016-10-29
      • 2017-11-10
      • 2019-09-30
      相关资源
      最近更新 更多