Robel Robel Lingstuyl
Robel Robel Lingstuyl

Reputation: 1591

Serverless create snspolicy fails with invalid parameter

Here is the error.

An error occurred: SNSTopicPolicy - Invalid parameter:
Policy Error: null (Service: AmazonSNS; 
Status Code: 400; Error Code: InvalidParameter; 
Request ID: 38a567df-2cff-50bf-8f0e-33a91775cc6e).

I cannot find a place to look into logs to tell me what parameter is missing.?.? I'm pretty sure I have everything that is required. I'm using this site and their api pages.

SNSTopic:
  Type: AWS::SNS::Topic
  Properties:
    DisplayName: Aura main Topic
    TopicName: ${file(./env.yml):${opt:stage, self:provider.stage}.env.auraSnsTopicName}

SNSTopicPolicy:
  Type: AWS::SNS::TopicPolicy
  Properties:
    PolicyDocument:
      Id: auraAllowSQSsendrobelrobel
      Statement:
        -
          Effect: Allow
          Action:
            - sns: Publish
          Resource: { "Fn::GetAtt":["SQSQueue" ,"Arn"]}
          Principle:
            AWS: "*"
    Topics:
      - { "Ref": "SNSTopic" }


SQSQueue:
  Type: AWS::SQS::Queue
  Properties:
    QueueName: ${file(./env.yml):${opt:stage, self:provider.stage}.env.eeegPagesQueueName}
    RedrivePolicy:
      deadLetterTargetArn: {"Fn::GetAtt" : [ "SQSQueueDLQ", "Arn" ]}
      maxReceiveCount: 2


SQSQueuePolicy:
  Type: AWS::SQS::QueuePolicy
  Properties:
    PolicyDocument:
      Id: allowSNSSourceAndLambdaTrigger
      Statement:
        -
          Effect: Allow
          Action:
            - SQS:ReceiveMessage
            - SQS:SendMessage
            - SQS:ChangeMessageVisibility
            - SQS:ListDeadLetterSourceQueues
            - SQS:GetQueueUrl
            # - lambda:CreateEventSourceMapping
            # - lambda:ListEventSourceMappings
            # - lambda:ListFunction
          Resource: {"Ref": "SNSTopic"}
    Queues:
      - { "Ref": "SQSQueue" }

I have an SQS Policy statement that is working just fine.

  Your Environment Information ----------------------------
     OS:                    Mac darwin
     Node Version:           8.12.0
     Serverless Version:     1.32.0

Upvotes: 0

Views: 2062

Answers (1)

Robel Robel Lingstuyl
Robel Robel Lingstuyl

Reputation: 1591

Turns out you need spelling is important and also the AWS sub object was not needed. Principal: "*"

Working Policy below:

SNSTopicPolicy:
  Type: AWS::SNS::TopicPolicy
  Properties:
    PolicyDocument:
      Statement:
        - Sid: auraAllowSQSPublish
          Effect: Allow
          Principal: "*"
          Action: "sns:Publish"
          Resource:  { "Ref": "SNSTopic" }
    Topics:
      - { "Ref": "SNSTopic" }

Upvotes: 1

Related Questions