#amazon-web-services #amazon-s3 #amazon-cloudfront
Вопрос:
Я видел руководства, позволяющие пользователям aws делать корзину закрытой, но обслуживать некоторые ее объекты через cloudfront. Я пытался сделать то же самое со всем статическим сайтом, размещенным в корзине s3, и, похоже, ничего не работает. Но я не могу найти ничего, что прямо говорило бы мне, что это невозможно.
Можно ли использовать функцию статического хостинга веб-сайтов S3 в частном хранилище? Могут ли пользователи получить доступ к сайту только через дистрибутив cloudfront, но не перейдя по правильному URL-адресу корзины s3?
Комментарии:
1. Вот официальная документация, которую вы ищете: docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/…
2. Однако руководство не относится к этому вопросу:
If you use an Amazon S3 bucket configured as a website endpoint, you must set it up with CloudFront as a custom origin. You can’t use the origin access identity feature described in this topic.
. Поэтому вам нужно настроить пользовательский источник и попытаться объединить его с процессом подписания.3. Но реальный вопрос в том, почему вы в первую очередь хотите настроить его с помощью хостинга веб-сайтов? Можете ли вы подробнее рассказать об этом @hipsterstomper69
4. Просто чтобы посмотреть, возможно ли это
Ответ №1:
Во-первых, OAI не работает, когда вы используете функцию статического веб-сайта S3.
Лучший способ сделать то, что вы хотите, — это добавить пользовательский заголовок в cloudfront. Сгенерируйте сложную и длинную строку, как будто это пароль, и передайте ее в заголовок реферера.
Затем добавьте политику корзины, которая позволяет всем (принципалу: «*») выполнять getobject, но при условии, что указан определенный заголовок.
Пример политики корзины:
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"Allow get requests originating from your Cloudfront distribution.",
"Effect":"Allow",
"Principal":"*",
"Action":["s3:GetObject","s3:GetObjectVersion"],
"Resource":"arn:aws:s3:::YOUR_BUCKET_NAME/*",
"Condition":{
"StringLike":{"aws:Referer": "9vzeMAVjTKCWXjbBNFsCnNRsPKqMYk6achgLXu5S"}
}
}
]
}
Не забудьте отключить функцию блокировки общего доступа S3 в своем ведре.
Вы можете найти более полное руководство там: https://aws.amazon.com/premiumsupport/knowledge-center/cloudfront-serve-static-website/?nc1=h_ls