the data is discarded after the container stops). This will run a DynamoDB local instance with ephemeral storage (i.e. If you already use docker-compose, you can just add the service to the end of your existing file. the same directory as your adle file): version: '3.8'Ĭommand: "-jar DynamoDBLocal.jar -sharedDb"
This is fairly simple: Create Docker Compose FileĬreate a file called docker-compose.yml in the root of your project (i.e. The approach I went with was having Gradle run the Docker container before tests run and then shut it down afterwards.
LOCAL DYNAMODB HOW TO
You’ll find lots of information online about how to fudge the maven dependency into Gradle but I found this hard to understand and debug. It’s great for running your unit tests as mocking out something as complex as Dynamo has limited benefit in terms of the completeness of your tests.ĭynamoDB local ships as a downloadable jar, a Maven dependency or a Docker container. In comparison with serverless offline, the start command will fire an init and a end lifecycle hook which is needed for serverless-offline and serverless-dynamodb-local to switch off both ressources.DynamoDB Local is a Java application which you can run locally to test your applications against DynamoDB, without the need to authenticate against public AWS endpoints. Using with serverless-offline and serverless-webpack plugin Now your local DynamoDB database will be automatically started before running serverless offline. Make sure that serverless-dynamodb-local is above serverless-offline so it will be loaded earlier.
LOCAL DYNAMODB INSTALL
Please note that you still need to install DynamoDB Local first.Īdd both plugins to your `serverless.yml` file: The `serverless dynamodb start` command can be triggered automatically when using `serverless-offline` plugin. Therefore we suggest you to use () plugin in your code.
LOCAL DYNAMODB CODE
When using this plugin with serverless-offline, it is difficult to use above syntax since the code should use DynamoDB Local for development, and use DynamoDB Online after provisioning in AWS. convertEmptyValues -e Set to true if you would like the document client to convert empty values (0-length strings, binary buffers, and sets) to be converted to NULL types when persisting to DynamoDB.Īll the above options can be added to serverless.yml to set default configuration: e.g. The -seed option determines which data categories to onload. seed -s After starting and migrating dynamodb local, injects seed data into your tables. migrate -m After starting DynamoDB local, create DynamoDB tables from the Serverless configuration. migration -m After starting dynamodb local, run dynamodb migrations. You must also specify -dbPath when you use this parameter. optimizeDbBeforeStartup -o Optimizes the underlying database tables before starting up DynamoDB on your computer.
(Currently, this parameter introduces delays only for global secondary indexes that are in either CREATING or DELETING status.) Setting this parameter helps DynamoDB simulate the behavior of the Amazon DynamoDB web service more closely. DynamoDB can perform some tasks almost instantaneously, such as create/update/delete operations on tables and indexes however, the actual DynamoDB service requires more time for these tasks. delayTransientStatuses -t Causes DynamoDB to introduce delays for certain operations. If you specify -sharedDb, all DynamoDB clients will interact with the same set of tables regardless of their region and credential configuration. sharedDb -h DynamoDB will use a single database file, instead of using separate files for each credential and region. For example to create /node_modules/serverless-dynamodb-local/dynamob/ you should specify -d / or -dbPath / with a forwardslash at the end. For the path, current working directory is /node_modules/serverless-dynamodb-local/dynamob. Note that you cannot specify both -dbPath and -inMemory at once. If you do not specify this option, the file will be written to the current directory. dbPath -d The directory where DynamoDB will write its database file. When you stop DynamoDB, none of the data will be saved. inMemory -i DynamoDB will run in memory, instead of using a database file. The default setting for -cors is an asterisk (*), which allows public access. You must provide a comma-separated "allow" list of specific domains. cors -c Enable CORS support (cross-origin resource sharing) for JavaScript.