Swift3 Middleware for OpenStack Swift, allowing access to OpenStack swift via the Amazon S3 API.
208eec3720
This comes from previous work to achieve real S3's ACL model. Previous discussion is here. (https://review.openstack.org/#/c/122029/) This supports ACL class and its related model (e.g. Grant, Grantee) with a feature to translate between a python class and an ElemntTree for XML used for S3's request and response. The model we need to disscuss is as follows: AccessControlPolicy: Owner: AccessControlList: Grant[n]: (Grantee, Permission) It comes from official S3 model overview. Please see official documentation here (http://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html) in detail. TODO: A stuff to translate between a python class and JSON format used for implementations to achieve ACL handling at backend swift. Change-Id: Ic6765f2a530caba6e22d5805323e31eb3d3013e7 |
||
---|---|---|
doc | ||
etc | ||
swift3 | ||
.gitignore | ||
.gitreview | ||
.unittests | ||
AUTHORS | ||
CHANGELOG | ||
LICENSE | ||
README.md | ||
requirements.txt | ||
setup.cfg | ||
setup.py | ||
test-requirements.txt | ||
tox.ini |
Swift3
Swift3 Middleware for OpenStack Swift, allowing access to OpenStack swift via the Amazon S3 API.
Install
-
Install Swift3 with
sudo python setup.py install
orsudo python setup.py develop
or via whatever packaging system you may be using. -
Alter your proxy-server.conf pipeline to have swift3:
If you use tempauth:
Was::
[pipeline:main]
pipeline = catch_errors cache tempauth proxy-server
Change To::
[pipeline:main]
pipeline = catch_errors cache swift3 tempauth proxy-server
If you use keystone:
Was::
[pipeline:main]
pipeline = catch_errors cache authtoken keystone proxy-server
Change To::
[pipeline:main]
pipeline = catch_errors cache swift3 s3token authtoken keystoneauth proxy-server
Note that swift3 explicitly checks that keystoneauth is in the pipeline. You must use this name in the pipeline statement and in [filter:keystoneauth] section header.
-
Add to your proxy-server.conf the section for the Swift3 WSGI filter::
[filter:swift3] use = egg:swift3#swift3
You also need to add the following if you use keystone (adjust port, host, protocol configurations for your environment):
[filter:s3token]
paste.filter_factory = keystoneclient.middleware.s3_token:filter_factory
auth_port = 35357
auth_host = 127.0.0.1
auth_protocol = http