The studio has a feature that allows course teams to upload videos
directly to S3. This is a very convenient feature, but it works only for
some S3 regions. The reason is that some regions require SigV4
authentication. It is possible to enable SigV4 authentication in boto by
setting the S3_USE_SIGV4 environment variable. However, this requires
the "host" setting to be passed to the boto.connection.Connection
Actually, there are many other settings that should be passed to the
boto constructor, and this is precisely what the
storages.backends.s3.S3BotoStorage constructor does. So we replace the
call to boto by a call to the storages app.
All other calls to boto are made via the storages app in edx-platform.
As far as we know, the only exception left is in ORA2.
edX.org has not faced this problem because they (probably) use a
different authentication capability.
This change is important because it allows video uploads to, for
instance, the us-east-2 region. The S3 emulator called MinIO (minio.io)
also requires SigV4. This emulator is useful for bringing object storage
capabilities to Open edX administrators which may not have access to
Please consider the following when opening a pull request:
Link to the relevant JIRA ticket(s) and tag any relevant team(s).
Squash your changes down into one or more discrete commits.
In each commit, include description that could help a developer
several months from now.
If running `make upgrade`, run as close to the time of merging as possible
to avoid accidentally downgrading someone else's package.
Put the output of `make upgrade` in its own separate commit,
decoupled from other code changes.
Aim for comprehensive test coverage, but remember that
automated testing isn't a substitute for manual verification.
Carefully consider naming, code organization, dependencies when adding new code.
Code that is amenable to refactoring and improvement benefits all platform developers,
especially given the size and scope of edx-platform.
Consult existing Architectural Decision Records (ADRs),
including those concerning the app(s) you are changing and
[those concerning edx-platform as a whole](https://github.com/edx/edx-platform/tree/master/docs/decisions).