node.js tarafından desteklenen AWS Lambda işlevini kullanarak bir SNS konusuna bir mesaj yayınlayabilir misiniz?node.js tarafından desteklenen bir AWS Lambda işlevini kullanarak bir SNS konusuna bir mesaj yayınlayabilir misiniz?
cevap
Evet, bir SNS konusunu yayımlayan bir Lambda işlevi yazabilirsiniz. Lambda'da çalışan kod, işlevinizin hangisini kullanıyorsa Java veya Javascript için tam AWS SDK'ya erişebilir. Konuya yayınlamak için işlev erişimini çalıştıran IAM rolünü verdiğinizden emin olmanız yeterlidir. JavaScript:
console.log("Loading function");
var AWS = require("aws-sdk");
exports.handler = function(event, context) {
var eventText = JSON.stringify(event, null, 2);
console.log("Received event:", eventText);
var sns = new AWS.SNS();
var params = {
Message: eventText,
Subject: "Test SNS From Lambda",
TopicArn: "arn:aws:sns:us-west-2:123456789012:test-topic1"
};
sns.publish(params, context.done);
};
O Lambda fonksiyonları kullanarak SNS iletileri işlemek için de mümkündür. aracılığıyla sunulan sns-message
fonksiyon planına bir göz atabilirsiniz. Lambda konsolu üzerinde bir Lambda fonksiyonu düğmesi oluşturun.
Öncelikle, uygun IAM policy
kullanarak sizin SNS topic
yayınlanacağını Lambda IAM role
izinleri vermek gerekir.
{
"Action" : [
"sns:Publish",
"sns:Subscribe"
],
"Effect" : "Allow",
"Resource" : [
{ "Ref" : "<your SNS topic ARN>" }
]
}
Sonra diğer Lambda
veya Node.js
kodundan senin SNS topic
için SNS publish
için aşağıdaki kodu kullanabilirsiniz.
var message = {};
var sns = new AWS.SNS();
sns.publish({
TopicArn: "<your SNS topic ARN>",
Message: JSON.stringify(message)
}, function(err, data) {
if(err) {
console.error('error publishing to SNS');
context.fail(err);
} else {
console.info('message published to SNS');
context.done(null, data);
}
});
Rolünüzde neden "sns: Abone ol" a ihtiyacınız olduğunu düşünüyorsunuz? –
Pek çok kısıtlamanın hayranı değilim. Bu, hem yayıncılar hem de aboneler için aynı politikayı kullanmamı sağlıyor. Bu durumda, sadece 'sns: Publish' ile sorun değil. – kixorz
'.done' '.succeed' yerine geçmek için gerekliydi ama benim için çalıştı –
- 1. SNS push bildirimini Amazon AWS'deki lambda işlevinden gönderebilir misiniz?
- 2. AWS SNS konusuna abone olan lambda işim kapanıyor ya da çalışmıyor mu?
- 3. Jilet tarafından desteklenen lambda ifadeleri var mı?
- 4. Bir AWS Lambda işlevini yeniden adlandırmak mümkün mü?
- 5. Bir Tarayıcı tarafından desteklenen tüm HTML Etiketleri
- 6. AWS lambda - I (SNS) aynı anda çağrılır 4 lambda işlevleri her yürütme
- 7. AWS Lambda işlevinde bir parke dosyası oluşturma
- 8. Bir AWS Lambda'nın bir
- 9. AWS SNS Teslimat Geri Bildirimi
- 10. Konsolda neden bir AWS Lambda işlevi oluşturamıyorum?
- 11. AWS SQS izinleri Lambda
- 12. Sadece AWS Lambda
- 13. AWS CloudFormation ARN'ye Lambda Fonksiyonu içinden erişin
- 14. benim SNS bir uygulama oluşturmak istiyorum
- 15. Bir lambda içinde dönüşü kullanarak?
- 16. AWS Lambda görüntüsü bozuk
- 17. Bir lambda
- 18. AWS Lambda Kinesis Akışı
- 19. CursorAdapter tarafından desteklenen bir Spinner'dan String değeri, Android
- 20. Çağırma AWS Lambda fonksiyonu sadece bir kez, tek bir belirli bir gelecek zaman
- 21. SNS Toplu Yayımlama
- 22. SNS ve SQS
- 23. Bana LINQ/lambda kod egzersizleri ile bir kaynak önerebilir misiniz?
- 24. Bir lambda
- 25. Bir AWS Lambda fonksiyonu içindeki mevcut bölge nasıl belirlenebilir?
- 26. URL'yi AWS aracılığıyla yönlendirin Lambda
- 27. AWS Lambda: Basit java sınıfından lambda işlevi nasıl çağırılır
- 28. Linq/lambda kullanarak bir bit bayrağı oluşturma
- 29. Bir dizgenin göründüğü satırı döndürmek için Node.js 'fs.readFile() işlevini kullanın.
- 30. AWS Lambda üzerinde LXML kullanın
Ben Lambda fonksiyonu SNS bildirim çağrısı iznine sahip olmadığı bir istisna alıyorum, ben Python kullanıyorum ve ben TargetArn' 'bir bildirim göndermeye çalışıyorum, ancak. Bu sadece 'TopicArn' ile mümkün mü ya da AWS LAmbda kullanarak Kişisel Uç Noktalara Bildirim gönderebilir miyiz? –
Denemedim, ancak EndpointArn'ı [create_platform_endpoint()] 'dan almışsanız, belirli son noktaya gönderebileceğinize inanıyorum (https://boto3.readthedocs.org/en/latest/reference/services/sns.html# SNS.Client.create_platform_endpoint), daha sonra [yayınlama()] (https://boto3.readthedocs.org/en/latest/reference/services/sns.html#SNS.Client.publish) EndicArn alanında ToppointArn alanında arama yapın. . – James
Yanıt için teşekkürler, son nokta ARN vardı, ama benim lambda işlevi SNS erişmek için izin yoktu, o zaman ben de bahsettiğim gibi amazon IAM'ı kullanarak lambda işlevinin rolünü ona erişim vermek olduğunu öğrendim @kixorz cevabının ilk yarısı. Sonra iyi çalıştı. –