如何仅允许将某些类型的文件上传到 Amazon S3 存储桶?
上次更新日期:2020 年 12 月 08 日
我想仅将某些文件类型存储在我的 Amazon Simple Storage Service (Amazon S3) 存储桶上。如何限制上传,以便我的存储桶仅接受这些文件类型?
解决方法
- 仅针对具有所需文件类型扩展名的对象允许 s3:PutObject 操作
- 针对没有所需文件类型扩展名的对象显式拒绝 s3:PutObject 操作
注意:此显式拒绝语句将文件类型要求应用于可完全访问 Amazon S3 资源的用户。
例如,以下存储桶策略示例允许对 exampleuser 的 s3:PutObject 操作,仅限于具有 .jpg、.png 或 .gif 文件扩展名的对象:
警告:此示例存储桶策略包括显式拒绝语句。如果未满足条件,即便用户已输入存储桶策略也会被拒绝访问存储桶。您必须先仔细检查存储桶策略,然后再进行保存。如果您被意外锁定,请参阅我意外拒绝了所有人对我的 Amazon S3 存储桶的访问。如何重新获得访问权限?
{
"Version": "2012-10-17",
"Id": "Policy1464968545158",
"Statement": [
{
"Sid": "Stmt1464968483619",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111111111111:user/exampleuser"
},
"Action": "s3:PutObject",
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*.jpg",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*.png",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*.gif"
]
},
{
"Sid": "Stmt1464968483619",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"NotResource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*.jpg",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*.png",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*.gif"
]
}
]
}
注意:对于第一个 Principal 值,列出要向其授予上传权限的用户的 Amazon 资源名称 (ARN)。对于 Resource 和 NotResource 值,请务必将 DOC-EXAMPLE-BUCKET 替换为您的存储桶名称。