Cloudformation: connect lambda to an exisitng SNS topic ?

0

Hello,

With cloudformation, is it possible to connecting a lambda to an existing SNS topic ?

I've tried with "AWS::Events::Rule" with this code (yaml)

      LambdaInvokeEventRule:
        Type: AWS::Events::Rule
        Properties:
          Name: "MyLambda"
          RoleArn: !GetAtt MyLambdaRole.Arn
          EventPattern: 
            source: 
              - "aws.sns"
            resources:
              - "arn:aws:sns:eu-west-1:643462973525:mytopic"
          Targets:
              - Arn: !GetAtt MyLambda.Arn
                Id: "MyLambda"

But the validation fails with this message "Invalid template resource property" for this block

Thanks !!

질문됨 5년 전2037회 조회
2개 답변
0

Hi,
Just to clarify. When the sns Topic gets a message, you want it to invoke a Lambda function to process the message that was sent to the SNS topic. If yes, then you want to create your Cloudformation template to look something like the following:

 
Parameters:
  MyLambdaArn:
    Type: String
    Default: arn:aws:lambda:us-east-1:XXXXXXXXXX:function:MyLambda
    Description: Enter the Lambda ARN
    
Resources:
  lambdaTopic:
    Type: AWS::SNS::Topic
    Properties:
      DisplayName: Topic that invokes the Lambda function
      Subscription:
        - Endpoint: !Ref MyLambdaArn
          Protocol: lambda

  lambdaPermission:
    Type: AWS::Lambda::Permission
    Properties:
      Action: lambda:InvokeFunction
      FunctionName: !Ref MyLambdaArn
      Principal: sns.amazonaws.com
      SourceArn: arn:aws:sns:eu-west-1:643462973525:mytopic

Hope that helps.
-randy

Edited by: rtakeshi on Aug 7, 2019 10:05 AM

답변함 5년 전
0

OK, I had use this solution first.

The SNS topic has created by an other teams but it make sens that the Lambda creation section must be present in their cloudformation file.

Very thanks !

답변함 5년 전

로그인하지 않았습니다. 로그인해야 답변을 게시할 수 있습니다.

좋은 답변은 질문에 명확하게 답하고 건설적인 피드백을 제공하며 질문자의 전문적인 성장을 장려합니다.

질문 답변하기에 대한 가이드라인