serverless-dynamodb-autoscaling icon indicating copy to clipboard operation
serverless-dynamodb-autoscaling copied to clipboard

feat: support external role (breaking change)

Open mvayngrib opened this issue 6 years ago • 0 comments

first off, thanks a bunch for this plugin, i've been using it for a while now and haven't had any issues!

I'm not sure if you're interested in merging this, as it has breaking changes (tests pass but serverless.yml configuration changed a bit). Still, maybe it'll be useful to some of the other folks who wanted to use one IAM role instead of many. For reference, the conf and role I use look like this:

serverless.yml:

custom:
  dynamodb-autoscaling:
    role: AutoScalingDynamoDBRole
    capacities:
      # same as before
      - table: InboxTable
        index:
          - context

resources:
  Resources:
    AutoScalingDynamoDBRole:
      Type: AWS::IAM::Role
      Properties:
        AssumeRolePolicyDocument:
          Version: '2012-10-17'
          Statement:
            - Effect: Allow
              Principal:
                Service:
                  - application-autoscaling.amazonaws.com
              Action:
                - sts:AssumeRole
        Path: "/"
        Policies:
          - PolicyName: AutoScalingDynamoDBPolicy
            PolicyDocument:
              Version: '2012-10-17'
              Statement:
                - Effect: Allow
                  Action:
                    - dynamodb:DescribeTable
                    - dynamodb:UpdateTable
                  Resource:
                    - Fn::Join:
                        - ""
                        - - "arn:aws:dynamodb:"
                          - Ref: AWS::Region
                          - ":*:table/${{self:custom.prefix}}*" # tables and indexes
                - Effect: Allow
                  Action:
                    - cloudwatch:DescribeAlarms
                    - cloudwatch:PutMetricAlarm
                    - cloudwatch:DeleteAlarms
                  Resource: "*"

the custom.prefix var is ${{self:service}}-${{self:provider.stage}}-

it's not the cleanest PR, as I saw the chance to improve some of the typings :)

mvayngrib avatar Mar 04 '18 02:03 mvayngrib