Skip to content

Commit 164f300

Browse files
committed
See scrapy#1778 - change default S3 ACL to "private" and allow customization via settings
1 parent 513ba7a commit 164f300

File tree

4 files changed

+17
-1
lines changed

4 files changed

+17
-1
lines changed

docs/topics/feed-exports.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,9 @@ passed through the following settings:
185185
* :setting:`AWS_ACCESS_KEY_ID`
186186
* :setting:`AWS_SECRET_ACCESS_KEY`
187187

188+
Default access policy for uploaded files is ``private``, it can be changed
189+
(for example, to ``public-read``) via :setting:`S3_STORE_ACL`.
190+
188191
.. _topics-feed-storage-stdout:
189192

190193
Standard output

docs/topics/settings.rst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -926,6 +926,15 @@ If enabled, Scrapy will respect robots.txt policies. For more information see
926926
this option is enabled by default in settings.py file generated
927927
by ``scrapy startproject`` command.
928928

929+
.. setting:: S3_STORE_ACL
930+
931+
S3_STORE_ACL
932+
------------
933+
934+
Default: ``'private'``
935+
936+
S3-specific access control policy (ACL) for uploaded files.
937+
929938
.. setting:: SCHEDULER
930939

931940
SCHEDULER

scrapy/pipelines/files.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,8 @@ class S3FilesStore(object):
8282
AWS_ACCESS_KEY_ID = None
8383
AWS_SECRET_ACCESS_KEY = None
8484

85-
POLICY = 'public-read'
85+
POLICY = 'private' # Overriden from settings.S3_STORE_ACL in
86+
# FilesPipeline.from_settings.
8687
HEADERS = {
8788
'Cache-Control': 'max-age=172800',
8889
}
@@ -232,6 +233,7 @@ def from_settings(cls, settings):
232233
s3store = cls.STORE_SCHEMES['s3']
233234
s3store.AWS_ACCESS_KEY_ID = settings['AWS_ACCESS_KEY_ID']
234235
s3store.AWS_SECRET_ACCESS_KEY = settings['AWS_SECRET_ACCESS_KEY']
236+
s3store.POLICY = settings['S3_STORE_ACL']
235237

236238
cls.FILES_URLS_FIELD = settings.get('FILES_URLS_FIELD', cls.DEFAULT_FILES_URLS_FIELD)
237239
cls.FILES_RESULT_FIELD = settings.get('FILES_RESULT_FIELD', cls.DEFAULT_FILES_RESULT_FIELD)

scrapy/settings/default_settings.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,8 @@
231231
SCHEDULER_DISK_QUEUE = 'scrapy.squeues.PickleLifoDiskQueue'
232232
SCHEDULER_MEMORY_QUEUE = 'scrapy.squeues.LifoMemoryQueue'
233233

234+
S3_STORE_ACL = 'private'
235+
234236
SPIDER_LOADER_CLASS = 'scrapy.spiderloader.SpiderLoader'
235237

236238
SPIDER_MIDDLEWARES = {}

0 commit comments

Comments
 (0)