Sha256: b95fa4d0c183c96139e89b648c8d412110ccce2946194243b3853cc45c2e6367

Contents?: true

Size: 1.45 KB

Versions: 7

Compression:

Stored size: 1.45 KB

Contents

require 'cloud_formation/bridge/resources/base'
require 'aws/sns'
require 'aws/sqs'

module CloudFormation
  module Bridge
    module Resources

      class SubscribeQueueToTopic < Base

        ARN = 'Arn'

        TOPIC_ARN = 'TopicArn'
        QUEUE_NAME = 'QueueName'
        RAW_MESSAGE_DELIVERY = 'RawMessageDelivery'

        REQUIRED_FIELDS = [
          TOPIC_ARN,
          QUEUE_NAME,
        ]

        def create(request)
          require_fields(request, REQUIRED_FIELDS)

          queue = queues.named(request.resource_properties[QUEUE_NAME])
          topic = topics[request.resource_properties[TOPIC_ARN]]

          subscription = topic.subscribe(queue)

          if request.resource_properties[RAW_MESSAGE_DELIVERY]
            subscription.raw_message_delivery = true
          end

          {
            FIELDS::PHYSICAL_RESOURCE_ID => subscription.arn,
            FIELDS::DATA => {
              ARN => subscription.arn,
            },
          }
        end

        def delete(request)
          subscription = subscriptions[request.physical_resource_id]
          subscription.unsubscribe if subscription && subscription.exists?
        end

        def topics
          @topics ||= sns.topics
        end

        def subscriptions
          @subscriptions ||= sns.subscriptions
        end

        def sns
          @sns ||= AWS::SNS.new
        end

        def queues
          @queues ||= AWS::SQS.new.queues
        end

      end

    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
cfn-bridge-0.0.16 lib/cloud_formation/bridge/resources/subscribe_queue_to_topic.rb
cfn-bridge-0.0.15 lib/cloud_formation/bridge/resources/subscribe_queue_to_topic.rb
cfn-bridge-0.0.14 lib/cloud_formation/bridge/resources/subscribe_queue_to_topic.rb
cfn-bridge-0.0.13 lib/cloud_formation/bridge/resources/subscribe_queue_to_topic.rb
cfn-bridge-0.0.11 lib/cloud_formation/bridge/resources/subscribe_queue_to_topic.rb
cfn-bridge-0.0.10 lib/cloud_formation/bridge/resources/subscribe_queue_to_topic.rb
cfn-bridge-0.0.9 lib/cloud_formation/bridge/resources/subscribe_queue_to_topic.rb