Easily provision AWS DynamoDB tables using Serverless Components.
$ npm install -g serverless
Just create a serverless.yml
file
$ touch serverless.yml $ touch .env # your AWS api keys
# .env AWS_ACCESS_KEY_ID=XXX AWS_SECRET_ACCESS_KEY=XXX
# serverless.yml myTable: component: '@serverless/aws-dynamodb' inputs: name: nameOfTable # optional attributeDefinitions: - AttributeName: id AttributeType: S keySchema: - AttributeName: id KeyType: HASH region: us-east-1
With globalSecondaryIndexes and/or localSecondaryIndexes
# serverless.yml myTable: component: '@serverless/aws-dynamodb' inputs: name: nameOfTable # optional attributeDefinitions: - AttributeName: id AttributeType: S - AttributeName: attribute1 AttributeType: N - AttributeName: attribute2 AttributeType: S keySchema: - AttributeName: id KeyType: HASH - AttributeName: attribute1 KeyType: RANGE localSecondaryIndexes: - IndexName: 'myLocalSecondaryIndex' KeySchema: - AttributeName: id KeyType: HASH - AttributeName: attribute2 KeyType: RANGE Projection: ProjectionType: 'KEYS_ONLY' globalSecondaryIndexes: - IndexName: 'myGlobalSecondaryIndex' KeySchema: - AttributeName: attribute2 KeyType: HASH Projection: ProjectionType: 'KEYS_ONLY' region: us-east-1
The following applies to indexes:
- LocalIndexes can only be created upon table creation. There is no way to update them and/or create them other than at table creation.
- GlobalSecondaryIndexes can be created and removed during and after table creation. During an update, only one create and delete can happen at a time.
- This component uses PAY_PER_REQUEST, which makes any throughput update redundant, including for GlobalSecondaryIndexes.
$ serverless
Checkout the Serverless Components repo for more information.