ฉันมีบัคเก็ตที่ฉันต้องการเข้าถึงโดยใช้เบราว์เซอร์ที่คล้ายกัน http://data.openspending.org/
และฉันต้องการให้มองเห็นเฉพาะโฟลเดอร์ย่อยเท่านั้น
ดังนั้นหาก Bucket1 มีหลายโฟลเดอร์ ฉันแค่ต้องการแสดงและให้ผู้ใช้ดาวน์โหลดเนื้อหาของโฟลเดอร์ zipFiles (Bucket1/zipFiles/*)
รับคำแนะนำจาก https://github.com/rufuspollock/s3-bucket-listing ฉันสามารถทำได้ด้วยการเปลี่ยนแปลง 5 รายการต่อไปนี้
ปิดการใช้งาน
การปิดกั้นการเข้าถึงสาธารณะ ในสิทธิ์ถัง
เพิ่มนโยบายที่ฝากข้อมูล
{
"เวอร์ชัน": "2012-10-17",
"คำแถลง": [
{
"ซิด": "AllowPublicRead",
"เอฟเฟกต์": "อนุญาต",
"อาจารย์ใหญ่": {
"AWS": "*"
},
"การกระทำ": "s3:GetObject",
"ทรัพยากร": [
"arn:aws:s3:::Bucket1/index.html",
"arn:aws:s3:::Bucket1/zipFiles/*"
]
},
{
"ซิด": "AllowPublicList",
"เอฟเฟกต์": "อนุญาต",
"อาจารย์ใหญ่": "*",
"การกระทำ": "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 หรือไม่
หรือถ้าทำให้เป็นสาธารณะเป็นวิธีเดียว ฉันจะจำกัดการเข้าถึงเฉพาะผู้ใช้องค์กรได้อย่างไร