Tôi có một nhóm mà tôi muốn truy cập bằng trình duyệt tương tự như http://data.openspending.org/
và tôi chỉ muốn một thư mục con được hiển thị.
Vì vậy, nếu Bucket1 có nhiều thư mục, tôi chỉ muốn hiển thị và cho phép người dùng tải xuống nội dung của thư mục zipFiles (Bucket1/zipFiles/*)
Nhận hướng dẫn từ https://github.com/rufuspollock/s3-bucket-listing Tôi đã có thể hoàn thành nó với 5 thay đổi sau
Vô hiệu hóa
chặn truy cập công cộng trong quyền xô
Thêm chính sách nhóm
{
"Phiên bản": "17-10-2012",
"Bản tường trình": [
{
"Sid": "Cho phép Công khai Đọc",
"Hiệu ứng": "Cho phép",
"Hiệu trưởng": {
"AWS": "*"
},
"Hành động": "s3:GetObject",
"Nguồn": [
"arn:aws:s3:::Bucket1/index.html",
"arn:aws:s3:::Bucket1/zipFiles/*"
]
},
{
"Sid": "Cho phépPublicList",
"Hiệu ứng": "Cho phép",
"Hiệu trưởng": "*",
"Hành động": "s3:ListBucket",
"Tài nguyên": "arn:aws:s3:::Bucket1",
"Điều kiện, tình trạng, trạng thái": {
"StringLike": {
"s3:prefix": "zipFiles/*"
}
}
}
]
}
cộng
CORS trong quyền nhóm
Thêm index.html vào thư mục gốc của nhóm
<!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>
- Kích hoạt lưu trữ trang web tĩnh
Nó hoạt động đến mức hạn chế quyền truy cập thư mục vào zipFiles. Vấn đề của tôi là tôi không muốn công khai trang web này. Tôi muốn giữ nó chỉ hiển thị cho người dùng tổ chức. Tôi đã thử hai điều. Đầu tiên là giới hạn theo địa chỉ IP. Khác là giới hạn bởi vpc. Cả hai đều không hoạt động vì địa chỉ IP không so sánh với IP riêng mà là IP bên ngoài. và giới hạn vpc có phụ thuộc tôi chưa tìm ra đầy đủ
Có cách nào để hiển thị nội dung thư mục S3 dưới dạng cấu trúc thư mục có thể duyệt (không phải định dạng xml) mà không công khai không? Dải IP của tổ chức được ngang hàng với tài khoản aws để nhân viên có thể truy cập ec2 bằng IP riêng.Điều tương tự có thể xảy ra với S3 không?
Hoặc nếu công khai nó là cách duy nhất, làm cách nào tôi có thể giới hạn quyền truy cập chỉ cho người dùng tổ chức?