我有一个存储桶,我想使用类似以下的浏览器访问它http://data.openspending.org/ 并且我希望仅显示子文件夹。因此,如果 Bucket1 有多个文件夹,我只想显示并让用户下载 zipFiles 文件夹 (Bucket1/zipFiles/*) 的内容
接受指示https://github.com/rufuspollock/s3-bucket-listing我通过以下 5 处修改完成了此任务
禁用 公共访问阻止在存储桶权限中
添加存储桶策略
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": [
"arn:aws:s3:::Bucket1/index.html",
"arn:aws:s3:::Bucket1/zipFiles/*"
]
},
{
"Sid": "AllowPublicList",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::Bucket1",
"Condition": {
"StringLike": {
"s3:prefix": "zipFiles/*"
}
}
}
]
}
添加 存储桶权限中的 CORS
在 bucket 的根目录中添加 index.html
<!DOCTYPE html>
<html>
<head>
<title>S3 Bucket Listing Generator</title>
</head>
<body>
<div id="navigation"></div>
<div id="listing"></div>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript">
var S3BL_IGNORE_PATH = false;
// var BUCKET_NAME = 'Bucket1';
var BUCKET_URL = 'https://Bucket1.s3-eu-west-1.amazonaws.com';
// var S3B_ROOT_DIR = 'SUBDIR_L1/SUBDIR_L2/';
// var S3B_SORT = 'DEFAULT';
// var EXCLUDE_FILE = 'index.html'; // change to array to exclude multiple files, regexp also supported e.g. /^(.*\/)?index.html$/ to exclude all index.html
// var AUTO_TITLE = true;
// var S3_REGION = 's3-eu-west-1';
</script>
<script type="text/javascript" src="https://rufuspollock.github.io/s3-bucket-listing/list.js"></script>
</body>
</html>
- 启用静态网站托管
它可以限制对 zipFiles 文件夹的访问。我的问题是我不想公开这个网站。我想让它只对组织用户可见。我尝试了两种方法。第一种是通过 IP 地址进行限制。另一种是通过 vpc 进行限制。这两种方法都不起作用,因为 IP 地址不是与私有 IP 进行比较,而是与外部 IP 进行比较。而且 vpc 限制有依赖关系,我还没有完全弄清楚
有没有办法将 S3 文件夹内容公开为可浏览的目录结构(不是 xml 格式)而不公开?组织的 IP 范围与 aws 帐户对等,因此员工可以使用私有 IP 访问 ec2。S3 也可以这样做吗?或者,如果公开是唯一的方法,我该如何限制只有组织用户才能访问?