@serverless/aws-dynamodb

Easily provision AWS DynamoDB tables using Serverless Components.

Usage no npm install needed!

<script type="module">
  import serverlessAwsDynamodb from 'https://cdn.skypack.dev/@serverless/aws-dynamodb';
</script>

README

aws-dynamodb

Easily provision AWS DynamoDB tables using Serverless Components.

 

  1. Install
  2. Create
  3. Configure
  4. Deploy

 

1. Install

$ npm install -g serverless

2. Create

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

3. Configure

# 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:

  1. LocalIndexes can only be created upon table creation. There is no way to update them and/or create them other than at table creation.
  2. GlobalSecondaryIndexes can be created and removed during and after table creation. During an update, only one create and delete can happen at a time.
  3. This component uses PAY_PER_REQUEST, which makes any throughput update redundant, including for GlobalSecondaryIndexes.

4. Deploy

$ serverless

 

New to Components?

Checkout the Serverless Components repo for more information.