Можно ли запретить публичный доступ к файлам AWS, но обслуживать только определенный источник? - PullRequest
0 голосов
/ 26 ноября 2018

Недавно я использую AWS S3 bucket для обслуживания статических файлов для моего проекта Django.
Вот мои настройки:

AWS_ACCESS_KEY_ID = config('AWS_ACCESS_KEY_ID') # 
AWS_SECRET_ACCESS_KEY = config('AWS_SECRET_ACCESS_KEY') # 
AWS_STORAGE_BUCKET_NAME = 'bucket-name' 
AWS_STATIC_LOCATION = 'static'
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME

AWS_S3_OBJECT_PARAMETERS = {
    'CacheControl': 'max-age=86400',
}
AWS_LOCATION = 'static'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]
STATIC_URL = 'https://%s/%s/' % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION)
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

После создания корзины я вижу этипараметры по умолчанию True

image

Но когда я пытаюсь получить доступ к моим статическим файлам с моего сайта www.my-site.com или локально 127.0.0.0.1: 8000, показывает 403 отказано в разрешении.Что мне не хватает?

Request URL: https://bucket-name.s3.us-east-2.amazonaws.com/static/file-name.js
Request method: GET
Remote address: 52.0.0.0:443
Status code: 403

После некоторых поисков я попытался определить CORS, например:

<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

1 Ответ

0 голосов
/ 27 ноября 2018

Attach role to existing/running EC2 instance

Чтобы определить роль IAM, вы можете выбрать существующий экземпляр и присоединить новую роль как S3. Доступ к EC2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...