Skip to content

Commit

Permalink
contributing: clarify scope (#993)
Browse files Browse the repository at this point in the history
  • Loading branch information
ikonst committed Nov 9, 2021
1 parent c8cb559 commit efa3a79
Showing 1 changed file with 29 additions and 0 deletions.
29 changes: 29 additions & 0 deletions docs/contributing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,35 @@ Outside of data compatibility, follow the usual semver rules for API changes and
to a major release.


The Scope of the Library
------------------------

The purpose of this library is to provide a Pythonic ODM layer on top of DynamoDB to be used
in server applications' runtime, i.e. to enable their various application logic and features.
While striving for the library to be useful, we're also trying to "do one thing well". For this reason:

- Database administration tasks are out of scope, and while PynamoDB has functions for
operations like CreateTable, CreateIndex and DeleteTable, it's because they are useful
for interacting with dynamodb-local and moto's DynamoDB backend from within test code.

For this reason, features such as enabling PITR backups, restoring from such backups,
updating indices, etc. are intentionally absent. For getting started and operating
on a small scale, AWS Console and the AWS Command Line Interface (awscli) can be used.
For larger scale, infrastructure provisioning by dedicated tools (such as CloudFormation
or Terraform) would be vastly preferable over anything PynamoDB could offer.

Per security best practices, we recommend running your application's runtime with an IAM role
having the least privileges necessary for it to function (which likely excludes any database
administration operations).

- While the library aims to empower application developers, it steers away from high-level features
which are not specific to DynamoDB. For example, a custom attribute which serializes UUIDs
as strings is doubtlessly something many applications have had a need for, but as long as it doesn't
exercise any core DynamoDB functionality (e.g. in the case of a UUID attribute, there isn't
a dedicated DynamoDB data type or API feature for storing UUIDs), we would recommend relegating
such functionality to auxillary libraries. One such library is `pynamodb-attributes <https://github.com/lyft/pynamodb-attributes>`_.


Pull Requests
-------------

Expand Down

0 comments on commit efa3a79

Please sign in to comment.