2013-09-05 16 views
11

Yeni bir AWS::SNS::Topic oluşturmadan bir AWS CloudFormation JSON şablonunda bir 'Abonelik' kaynağı oluşturmak mümkün mü?Bir konu yaratmadan CloudFormation ile bir SNS aboneliği oluşturmak mümkün mü?

Benim durumumda, konu CloudFormation komut dosyasının dışında oluşturuldu ve bende, komut dosyası içinde oluşturulan kaynakları içeren bazı abonelikler oluşturmak istiyorum.

I.E.

"DbfExtractQueue": { 
     "Type": "AWS::SQS::Queue" 
    }, 

    "EtlSubscription": { 
     "Type": "AWS::SNS::Subscription", 
     "Properties": { 
      "Endpoint": { "Fn::GetAtt": ["DbfExtractQueue", "Arn"] }, 
      "Protocol": "sqs", 
      "TopicArn": { "Ref": "EtlNotificationTopicARN" } 
     } 
    }, 

EtlNotificationTopicARN komut dosyasına geçirilir ve bir SNS konusunu gösterir ARN.

+0

: Konu Gözlemciler hakkında hiçbir şey bilmiyor gerekir. CloudFormation'un onu desteklememesi, gözlerimi döndürmemi sağlıyor. – giorgiosironi

cevap

1

Zaten keşfettiğiniz gibi, AWS CloudFormation beklenen AWS::SNS::Subscription kaynağını sağlamıyor (henüz) ve bunun başka bir yolla mümkün olduğunu bilmiyorum, maalesef - mantığın her ikisinin de bir şablon içinde yönetildiğini tahmin et veya harici olarak, ancak kullanım durumunuz sağlamdır ve bunun neden mevcut olmamasının temel bir nedenini göremiyorum (belki de bir noktada ekleyecektir, AWS genellikle API'lerini zaman içinde tutarsızlıkları/eksiklikleri gidermek için genişletmektedir).

+0

Tamam, onay için teşekkürler. Sıraya konuyu bağlamak için bazı Ruby API çağrılarını kullandım, ama dediğin gibi, bir noktada orada görmek güzel olurdu. şerefe! – stefanlz

3

Artık CloudFormation, Lambda işlevleri olan Özel Kaynak Türlerini desteklediğinden beri mümkündür. Ben CloudFormation tamplate burada bir özü oluşturduk

: Yukarıdaki belgelerinden

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-subscription.html

Örnekler: https://gist.github.com/martinssipenko/4d7b48a3d6a6751e7464.js

+2

Bu bağlantı soruyu yanıtlayabilirken, cevabın temel kısımlarını buraya dahil etmek ve referans için bağlantı sağlamak daha iyidir. Bağlantılı sayfa değiştiğinde yalnızca bağlantı yanıtları geçersiz olabilir. –

+0

Linkin https://gist.github.com/martinssipenko/4d7b48a3d6a6751e7464 – giorgiosironi

8

Dava Kasım 2016 tarihinden itibaren yerli CloudFormation doğrudan bunu yapmak artık mümkün .

YAML:

MySubscription: 
    Type: AWS::SNS::Subscription 
    Properties: 
    Endpoint: [email protected] 
    Protocol: email 
    TopicArn: !Ref 'MySNSTopic' 

JSON: Bu Gözlemci deseni 101

"MySubscription" : { 
    "Type" : "AWS::SNS::Subscription", 
    "Properties" : { 
    "Endpoint" : "[email protected]", 
    "Protocol" : "email", 
    "TopicArn" : {"Ref" : "MySNSTopic"} 
    } 
} 
+2

olması gerektiğine inanıyorum Abonelikte rawMessageDelivery'i ayarlamak istiyorsanız, abonelik oluştururken bunu belirtmenin bir yolu olmadığı için şansınız kalmaz ve Kaynak daha sonra ayarlamak için arn geri dönmez. RawMessageDelivery kullanmak istiyorsanız, bunun için özel bir lambda işlevi kullanmanın tek yolu gibi görünüyor. Özel bir lambda işlevi kullanmadan herhangi bir şekilde farkında mısınız? – luk2302

İlgili konular