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.