# DynamoDB Trigger

**URL:** <https://forum.serverless.com/t/dynamodb-trigger/4530>\
**Category:** Serverless Framework\
**Tags:** aws\
**Created:** [May 18, 2018, 9:55am UTC](https://forum.serverless.com/t/dynamodb-trigger/4530 "2018-05-18T09:55:14Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![rasool](https://avatars.discourse-cdn.com/v4/letter/r/87869e/32.png) [@rasool](https://forum.serverless.com/u/rasool)\
**Post date:** [May 18, 2018, 9:55am UTC](https://forum.serverless.com/t/dynamodb-trigger/4530/1 "2018-05-18T09:55:14Z")

</div>

While creating dynamod stream via serverless we are getting below error  
Serverless Error ---------------------------------------  
An error occurred: IamRoleLambdaExecution - The policy failed legacy parsing (Service:  
AmazonIdentityManagement; Status Code: 400; Error Code: MalformedPolicy  
Document; Request ID: 2ef8eff1-5a80-11e8-a9a4-65fc1d91e8d7).

and our serverless.yml file looks like this

```
service: dynamodb-trigger-service
provider:
  name: aws
  runtime: nodejs8.10
  stage: dev
  region: us-east-1
  environment:
    PARENT_DYNAMODB_TABLE: ${self:service}-${opt:stage, self:provider.stage}_parent
    CHILD_DYNAMODB_TABLE: ${self:service}-${opt:stage, self:provider.stage}_child
     
  iamRoleStatements:
    - Effect: Allow
      Action:
        - dynamodb:DescribeStream
        - dynamodb:GetRecords
        - dynamodb:GetShardIterator
        - dynamodb:ListStreams
        - dynamodb:Query
        - dynamodb:Scan
        - dynamodb:GetItem
        - dynamodb:PutItem
        - dynamodb:UpdateItem
        - dynamodb:DeleteItem
      Resource: "arn:aws:dynamodb:${opt:region, self:provider.region}:#{AWS.AccountId}:table/${self:provider.environment.PARENT_DYNAMODB_TABLE}/stream/*"
          
    - Effect: Allow
      Action:
        - dynamodb:Query
        - dynamodb:Scan
        - dynamodb:GetItem
        - dynamodb:PutItem
        - dynamodb:UpdateItem
        - dynamodb:DeleteItem
      Resource: "arn:aws:dynamodb:${opt:region, self:provider.region}:#{AWS.AccountId}:table/${self:provider.environment.CHILD_DYNAMODB_TABLE}"
package:
  exclude:
    - node_modules/@types/**
    - node_modules/@serverless/**
    - '@types/**'
  include:
    - src/**
    - '!src/**/*.spec.ts'
plugins:
  - serverless-plugin-typescript
  - serverless-offline
functions:
  events_trigger:
    handler: src/events/index.trigger
    events:
      - stream: arn:aws:dynamodb:${opt:region, self:provider.region}:#{AWS.AccountId}:table/${self:provider.environment.PARENT_DYNAMODB_TABLE}/stream/*
resources:
  Resources:
    parentTable:
      Type: 'AWS::DynamoDB::Table'
      DeletionPolicy: Delete
      Properties:
        AttributeDefinitions:
          - 
            AttributeName: identifier
            AttributeType: S
        KeySchema:
          - 
            AttributeName: identifier
            KeyType: HASH
        ProvisionedThroughput:
          ReadCapacityUnits: 5
          WriteCapacityUnits: 5
        StreamSpecification:
          StreamViewType: NEW_AND_OLD_IMAGES  
        TableName: ${self:provider.environment.PARENT_DYNAMODB_TABLE}
    childTable:
      Type: 'AWS::DynamoDB::Table'
      DeletionPolicy: Delete
      Properties:
        AttributeDefinitions:
          - 
            AttributeName: identifier
            AttributeType: S
        KeySchema:
          - 
            AttributeName: identifier
            KeyType: HASH
        ProvisionedThroughput:
          ReadCapacityUnits: 5
          WriteCapacityUnits: 5
        TableName: ${self:provider.environment.CHILD_DYNAMODB_TABLE}  

```

Any help is appritiated .

---

<div class="post-metadata">

**Author:** ![darrenhgc](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.serverless.com/darrenhgc/32/2049_2.png) [@darrenhgc](https://forum.serverless.com/u/darrenhgc)\
**Post date:** [June 4, 2018, 5:24pm UTC](https://forum.serverless.com/t/dynamodb-trigger/4530/2 "2018-06-04T17:24:32Z")

</div>

Ran into this myself and found [this github issue](https://github.com/serverless/serverless/issues/3967)` to be of some help.

TLDR:

> trying to reference ${AWS::Region} and ${AWS::AccountId} resulting in legacy parsing error during cloudformation load. work around was using !Join and !Ref

---

<div class="post-metadata">

**Author:** ![buggy](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.serverless.com/buggy/32/177_2.png) [@buggy](https://forum.serverless.com/u/buggy)\
**Post date:** [June 5, 2018, 3:14am UTC](https://forum.serverless.com/t/dynamodb-trigger/4530/3 "2018-06-05T03:14:10Z")

</div>

I suspect you’ve copied `#{AWS.AccountId}` from somewhere that was using the [serverless-pseudo-parameters plugin](https://www.npmjs.com/package/serverless-pseudo-parameters). Try adding that plugin.

---

<div class="post-metadata">

**Author:** ![dcabib](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.serverless.com/dcabib/32/4475_2.png) [@dcabib](https://forum.serverless.com/u/dcabib)\
**Post date:** [September 2, 2020, 11:46pm UTC](https://forum.serverless.com/t/dynamodb-trigger/4530/4 "2020-09-02T23:46:41Z")

</div>

[rasool] Did yiu have any luck make your serverless.yml work? I am trying look for exactly the same process to use dynamoDB stream and I am not finding any support.

Regards.
