Guest User

Untitled

a guest
Jan 23rd, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.19 KB | None | 0 0
  1. //create a list of sns topics from input (cloud formation outputs)
  2. //for each topic - run "aws sns list-subscriptions-by-topic --topic-arn <topicArn>"
  3. // for each subscription with "Protocol": "sqs" - run "aws sns set-subscription-attributes --attribute-name RawMessageDelivery --attribute-value true --subscription-arn <subscriptionArn>"
  4. var AWS = require('aws-sdk');
  5. var sns = new AWS.SNS({
  6. apiVersion: '2010-03-31',
  7. accessKeyId: '<accessKeyId>',
  8. secretAccessKey: '<secretAccessKey>',
  9. region: "us-east-1"
  10. });
  11. var async = require('async');
  12.  
  13. if (process.argv.length < 3) {
  14. console.log('at least 1 param is needed');
  15. process.exit(1);
  16. }
  17. var outputs = require(process.argv[2]);
  18. const keys = [
  19. "ProcessAcceptedSns",
  20. "ProcessDoneSns"
  21. ];
  22.  
  23. async.each(keys, function(key, cb){
  24. if (outputs[key]) {
  25. var params = {
  26. TopicArn: outputs[key]
  27. };
  28. sns.listSubscriptionsByTopic(params, function(err, data) {
  29. if (err) {
  30. console.error(err); // an error occurred
  31. cb(err);
  32. }
  33. else {
  34. if (data && data.Subscriptions && data.Subscriptions.length) {
  35. async.each(data.Subscriptions, function(subscription, cb){
  36. if (subscription && subscription.SubscriptionArn && subscription.Protocol === "sqs") {
  37. var params = {
  38. AttributeName: 'RawMessageDelivery', /* required */
  39. SubscriptionArn: subscription.SubscriptionArn, /* required */
  40. AttributeValue: 'true'
  41. };
  42. sns.setSubscriptionAttributes(params, function(err, data) {
  43. if (err) {
  44. console.error('failed to change subscription ' + subscription.SubscriptionArn, err); // an error occurred
  45. cb(err);
  46. }
  47. else {
  48. console.log('subscription ' + subscription.SubscriptionArn , data);
  49. cb();
  50. }
  51. });
  52. }
  53. else {
  54. cb();
  55. }
  56. }, function (err){
  57. cb(err);
  58. });
  59. }
  60. }
  61. });
  62. }
  63. else {
  64. cb();
  65. }
  66. }, function(err){
  67. if (err) {
  68. console.error(err);
  69. process.exit(1);
  70. }
  71. else {
  72. process.exit();
  73. }
  74. })
Add Comment
Please, Sign In to add comment