Metadata-Version: 2.1
Name: aws-cdk-dynamodb-seeder
Version: 1.26.0
Summary: A simple CDK JSON seeder for DynamoDB
Home-page: https://github.com/elegantdevelopment/aws-cdk-dynamodb-seeder#readme
Author: Justin Taylor<jtaylor@elegantdevelopment.co.uk>
License: Apache-2.0
Project-URL: Source, https://github.com/elegantdevelopment/aws-cdk-dynamodb-seeder.git
Description: # aws-cdk-dynamodb-seeder [![Mentioned in Awesome CDK](https://awesome.re/mentioned-badge.svg)](https://github.com/eladb/awesome-cdk)
        
        ![build](https://github.com/elegantdevelopment/aws-cdk-dynamodb-seeder/workflows/build/badge.svg)
        [![codecov](https://codecov.io/gh/elegantdevelopment/aws-cdk-dynamodb-seeder/branch/master/graph/badge.svg)](https://codecov.io/gh/elegantdevelopment/aws-cdk-dynamodb-seeder)
        [![dependencies Status](https://david-dm.org/elegantdevelopment/aws-cdk-dynamodb-seeder/status.svg)](https://david-dm.org/elegantdevelopment/aws-cdk-dynamodb-seeder)
        [![npm](https://img.shields.io/npm/dt/aws-cdk-dynamodb-seeder)](https://www.npmjs.com/package/aws-cdk-dynamodb-seeder)
        
        [![npm version](https://badge.fury.io/js/aws-cdk-dynamodb-seeder.svg)](https://badge.fury.io/js/aws-cdk-dynamodb-seeder)
        [![NuGet version](https://badge.fury.io/nu/ElegantDevelopment.AWSCDKDynamoDBSeeder.svg)](https://badge.fury.io/nu/ElegantDevelopment.AWSCDKDynamoDBSeeder)
        [![PyPI version](https://badge.fury.io/py/aws-cdk-dynamodb-seeder.svg)](https://badge.fury.io/py/aws-cdk-dynamodb-seeder)
        [![Maven Central](https://img.shields.io/maven-central/v/io.github.elegantdevelopment/AWSCDKDynamoDBSeeder?color=brightgreen)](https://repo1.maven.org/maven2/io/github/elegantdevelopment/AWSCDKDynamoDBSeeder/)
        
        A simple CDK JSON seeder for DynamoDB
        
        ## Why this package
        
        Glad you asked!
        
        Using [AWS CDK](https://aws.amazon.com/cdk) for automating infrastructure deployments is an amazing way of integrating the development and operations into one process and one codebase.
        
        However, building dev or test environments that come pre-populated with data can be tricky, especially when using [Amazon DynamoDB](https://aws.amazon.com/dynamodb).
        
        ## How do I use it
        
        Install using your favourite package manager:
        
        ```sh
        yarn add aws-cdk-dynamodb-seeder
        ```
        
        ### Example usage
        
        ```python
        # Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
        from aws_cdk_dynamodb_seeder import Seeder
        my_table = Table(stack, "MyTable",
            table_name="MyTable",
            partition_key={"name": "Id", "type": AttributeType.STRING}
        )
        Seeder(stack, "MySeeder",
            table=my_table,
            table_name="MyTable",
            setup=require("./items-to-put.json"),
            teardown=require("./keys-to-delete.json"),
            refresh_on_update=True
        )
        ```
        
        For a more in-depth example, see: [elegantdevelopment/aws-cdk-dynamodb-seeder-examples](https://github.com/elegantdevelopment/aws-cdk-dynamodb-seeder-examples).
        
        ### Importing seed data
        
        Data passed into `setup` ("Items" to put) or `teardown` ("Keys" to delete) should be an `array` of JavaScript objects (that are, in turn, representations of `string` to [AttributeValue](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_AttributeValue.html) maps).
        
        * `setup` elements should use the format of `params.Item` from [AWS.DynamoDB.DocumentClient.put()](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html#put-property)
        * `teardown` elements should use the format of `params.Key` from [AWS.DynamoDB.DocumentClient.delete()](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html#delete-property)
        
        ## Versioning
        
        We will *attempt* to align the version of this package with [AWS CDK](https://aws.amazon.com/cdk), but always check our release descriptions for compatibility.
        
        ## Internals
        
        Behind the scenes we use an [AwsCustomResource](https://docs.aws.amazon.com/cdk/api/latest/typescript/api/custom-resources/awscustomresource.html) as a representation of the related table's seed state. The custom resource's event handlers invoke a [Function](https://docs.aws.amazon.com/cdk/api/latest/typescript/api/aws-lambda/function.html#aws_lambda_Function) to perform setup and/or teardown actions.
        
        ### Deploying a stack
        
        On deployment, we write copies of your seed data locally and use a [BucketDeployment](https://docs.aws.amazon.com/cdk/api/latest/typescript/api/aws-s3-deployment/bucketdeployment.html#aws_s3_deployment_BucketDeployment) to write it to an S3 [Bucket](https://docs.aws.amazon.com/cdk/api/latest/typescript/api/aws-s3/bucket.html#aws_s3_Bucket).
        
        We then create the handler function and custom resource to field seed requests (the `onCreate` event will immediate fire as the stack deploys, reading the data from the bucket and seeding the table using [AWS.DynamoDB.DocumentClient](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html)).
        
        ### Updating a stack
        
        On a stack update, the `onUpdate` handler is triggered when `Seeder.props.refreshOnUpdate` is `true`.
        
        This will run [AWS.DynamoDB.DocumentClient.delete()](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html#delete-property) on every teardown "Key" followed by [AWS.DynamoDB.DocumentClient.put()](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html#put-property) on every setup "Item".
        
        ### Destroying a stack
        
        When the stack is destroyed, the event handler's `onDelete` function will be invoked, providing `Seeder.props.teardown` is set.
        
        This simply runs [AWS.DynamoDB.DocumentClient.delete()](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html#delete-property) on every teardown "Key" before destroying the `Seeder`'s resources.
        
        <!-- Internals -->
        
Platform: UNKNOWN
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: JavaScript
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Typing :: Typed
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved
Requires-Python: >=3.6
Description-Content-Type: text/markdown
