У меня есть сегмент, к которому я хочу получить доступ с помощью браузера, похожего на http://data.openspending.org/
и я бы хотел, чтобы была видна только подпапка.
Итак, если у Bucket1 есть несколько папок, я хочу показать и разрешить пользователям загружать содержимое папки zipFiles (Bucket1/zipFiles/*)
Принимая инструкции от https://github.com/rufuspollock/s3-bucket-listing Я смог сделать это со следующими 5 изменениями
Запрещать
блокировка общего доступа в правах корзины
Добавить политику корзины
{
«Версия»: «2012-10-17»,
"Заявление": [
{
«Сид»: «Разрешить общедоступное чтение»,
«Эффект»: «Разрешить»,
"Главный": {
"АВС": "*"
},
«Действие»: «s3: GetObject»,
"Ресурс": [
"arn:aws:s3:::Bucket1/index.html",
"arn:aws:s3:::Bucket1/zipFiles/*"
]
},
{
«Сид»: «Аллоупубликлист»,
«Эффект»: «Разрешить»,
"Главный": "*",
"Действие": "s3:ListBucket",
"Ресурс": "arn:aws:s3:::Bucket1",
"Условие": {
"StringLike": {
"s3:префикс": "zipFiles/*"
}
}
}
]
}
Добавлять
CORS в разрешениях корзины
Добавьте 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, поэтому сотрудники могут получить доступ к ec2 с помощью частных IP-адресов.Возможно ли то же самое для S3?
Или, если сделать его общедоступным — единственный способ, как я могу ограничить доступ только для пользователей организации?