Skip to content

Instantly share code, notes, and snippets.

@krishankant
Created October 12, 2019 13:03
Show Gist options
  • Save krishankant/de629c85008ec74d211c2f63dd782b8d to your computer and use it in GitHub Desktop.
Save krishankant/de629c85008ec74d211c2f63dd782b8d to your computer and use it in GitHub Desktop.
service: email-api
plugins:
- serverless-webpack
- serverless-offline #must be last
provider:
name: aws
runtime: nodejs10.x
stage: dev
region: us-east-1
iamRoleStatements:
- Effect: 'Allow'
Action:
- 'ses:SendEmail'
- 'ses:SendRawEmail'
- 'sns:Publish'
- "sqs:SendMessage"
- "sqs:GetQueueUrl"
- "sqs:ListQueues"
- "sqs:ReceiveMessage"
- "sqs:DeleteMessage"
- "sqs:GetQueueAttributes"
- "lambda:InvokeFunction"
- "lambda:InvokeAsync"
Resource: '*'
functions:
app:
handler: index.handler
events:
- http:
path: /
method: post
email-failures:
handler: email-failures.handler
reservedConcurrency: 3
events:
- sqs:
arn:
Fn::GetAtt:
- EmailFailureQueue
- Arn
resources:
Resources:
EmailFailureTopic:
Type: AWS::SNS::Topic
Properties:
TopicName: ses-failure-topic-${self:provider.stage}
EmailFailureQueue:
Type: "AWS::SQS::Queue"
Properties:
QueueName: "EmailFailureQueue-${self:provider.stage}"
EmailFailureQueueSubscription:
Type: AWS::SNS::Subscription
Properties:
TopicArn: !Ref EmailFailureTopic
Endpoint: !GetAtt
- EmailFailureQueue
- Arn
Protocol: sqs
RawMessageDelivery: 'true'
SQSSNSPolicy:
Type: AWS::SQS::QueuePolicy
Properties:
PolicyDocument:
Version: "2012-10-17"
Id: "PushEmailFailureToSQSPolicy"
Statement:
- Sid: "allow-sns-to-send-message-to-sqs"
Effect: Allow
Principal: '*'
Action:
- 'sqs:SendMessage'
Resource: !GetAtt 'EmailFailureQueue.Arn'
Condition:
ArnEquals:
aws:SourceArn: !Ref 'EmailFailureTopic'
Queues:
- !Ref EmailFailureQueue
@HemantL9
Copy link

Doesn't work. Visual Studio throws error at !Ref or !GetAtt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment