【发布时间】: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