我的移动应用程序使用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()进入用户池
发布于 2020-01-19 13:25:47
我会调用一个API,并在您的Lambda中检查安全性/它是谁,以及他们是否有权删除文件。您也许可以从策略中检查放大用户特征,但尚未尝试。
但是,如果将来需要,额外的api会为您提供另一层安全性。
https://stackoverflow.com/questions/59345537
复制相似问题