我的网站上有一个上传表单,每个登录用户都可以上传视频。上传视频时,我在存储桶中生成一个随机名称的新文件夹,并将所有上传的视频都放在该文件夹中。我想以某种方式限制上传文件的权限,仅限上传视频的用户。建议的方法是什么?
我读到您可以通过编程方式创建 IAM(AWS 身份和访问管理(用户:
- https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html
- https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/IAM.html#createUser-property
"AWS IAM简介"视频提到,您可以将对 AWS 资源的访问限制为每个 IAM 用户:
- https://aws.amazon.com/iam/
这是一个好方法吗?
我对方法的想法:
- 只有登录的用户才能上传。他们在我们的数据库中有一个帐户
- 我们需要以某种方式将数据库用户连接到 IAM 标识。在数据库中存储某些内容?
- 当用户尝试上传视频文件时,请检查数据库中的用户记录是否具有 IAM 身份(如果未创建
- 以某种方式存储用户有权访问的 AWS S3 资源。最好的方法是什么?
更多问题:
- 在 AWS S3 上使用一个存储桶是否足够,还是我需要每人一个 存储桶
- 我是否真的需要创建 IAM 用户来限制访问,或者是否可以以其他方式创建?
Cognito 身份池非常适合这种情况。对于授权角色,请为其提供如下所示的策略:
{
"Sid": "Access User-Specific Folder",
"Effect": "Allow",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::YOUR-BUCKET-NAME/${cognito-identity.amazonaws.com:sub}/*"
}
这会将用户限制为文件夹中与其身份池中的唯一 ID 同名的对象。此方法仅使用一个存储桶。
每当您考虑以编程方式为每个用户创建自定义 IAM 角色或为每个用户创建不同的存储桶时,答案都是使用 Cognito 身份。