मैं Amazon Simple Notification Service का उपयोग शुरू करना चाहता था, लेकिन मुझे कोई भी पर्ल लाइब्रेरी नहीं मिली है जिसका उपयोग मैं सेवा तक पहुंचने के लिए कर सकता हूं। मैं अपनी खुद की लाइब्रेरी नहीं बनाऊंगा, मैं देखना चाहता था कि किसी ने एसएनएस सेवा के लिए किसी भी पर्ल पुस्तकालयों का उपयोग किया है, और यदि वे किसी की भी सिफारिश करेंगे।अमेज़ॅन एसएनएस (सरल अधिसूचना सेवा) पर्ल पुस्तकालय
उत्तर
मैं एक छोटे से स्क्रिप्ट के साथ संयोजन के रूप में नेट :: अमेज़न :: AWSSign प्रयोग किया है:
#!/usr/bin/perl
use Net::Amazon::AWSSign;
$ACCESS_KEY_ID="<my key id>";
$SECRET_KEY="<my secret key>";
$TOPIC_ARN='<my topic arn>';
$TOPIC_ARN =~ s/:/%3A/g;
$MESSAGE="This is a test";
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$year += 1900;
$mon+=1;
$timestamp = sprintf("%4.4d-%2.2d-%2.2dT%2.2d:%2.2d:%2.2d.000Z",
$year,$mon,$mday,$hour,$min,$sec);
$timestamp =~ s/:/%3A/g;
$REQUEST="http://sns.us-east-1.amazonaws.com/".
"?TopicArn=$TOPIC_ARN".
"&Message=$MESSAGE".
"&Action=Publish".
"&SignatureVersion=2".
"&SignatureMethod=HmacSHA256".
"&Timestamp=$timestamp".
"&AWSAccessKeyId=$ACCESS_KEY_ID";
my $awsSign=new Net::Amazon::AWSSign("$ACCESS_KEY_ID", "$SECRET_KEY");
$signed = $awsSign->addRESTSecret($REQUEST);
$res = `curl -s -o- '$signed'`;
if ($res =~ /<error>/) {
print "ERROR!\n";
return 1;
}
0;
मैं वास्तव में एक्सएमएल :: अंत में सरल थे, और XMLIn को कर्ल से परिणाम पारित कर दिया, पार्स करने के लिए एक्सएमएल अमेज़ॅन लौटता है। जो भी आप करेंगे ...
Amazon::SNS मौजूद है। दस्तावेज़ बहुत अस्पष्ट हैं लेकिन ऐसा लगता है कि यह मूल बातें करता है, और कोड की गुणवत्ता मेरे लिए ठीक लगती है।
मैंने ब्रैड को शुरुआती बिंदु के रूप में इस्तेमाल किया, धन्यवाद ब्रैड! मैंने जीएमटाइम के लिए लोकलटाइम बदल दिया था। मैं विषयों का उपयोग नहीं कर रहा था लेकिन लक्षित एआरएन और भूमिका आधारित प्रमाणीकरण का उपयोग कर रहा था। मुझे इसे काम करने के लिए सुरक्षा टोकन पास करना पड़ा और जब मैंने इसे जीसीएम जेसन रैपर में रखा तो संदेश केवल एंड्रॉइड पुश के लिए काम करता था। कोड में मैं प्लेटफ़ॉर्म का पता लगाने और तदनुसार पेलोड समायोजित करने के लिए TargetARN में अपना एप्लिकेशन नाम उपयोग करता हूं। नोट: विंडोज कोड यह अनचाहे है।
नोट की एक आखिरी वस्तु पागल नेस्टेड जेसन एन्कोडिंग है जो एसएनएस की आवश्यकता होती है।
sub send_sns
{
# required arguments: endpoint (AWS SNS endpoint), message
my $args = shift;
my $TargetArn=encode_url($args->{endpoint});
my $message=$args->{message};
my $data = {};
my $json = JSON->new->utf8->allow_nonref;
if ($args->{endpoint} =~ /GCM\/[a-z]+_android\//) {
# Android
$data->{data}{message}=$args->{message};
my $dataString = $json->encode($data);
$message = '{"GCM": '.$json->encode($dataString).'}';
} elsif ($args->{endpoint} =~ /APNS\/[a-z]+_apple_ios\//) {
# iOS
$data->{aps}{alert}=$args->{message};
my $dataString = $json->encode($data);
$message = '{"APNS": '.$json->encode($dataString).'}';
} elsif ($args->{endpoint} =~ /ADM\/[a-z]+_windows\//) {
# windows (incomplete)
$data->{data}{message}=$args->{message};
my $dataString = $json->encode($data);
$message = '{"ADM": '.$json->encode($dataString).'}';
}
use Net::Amazon::AWSSign;
my $credentials = qx[ curl -s --fail http://169.254.169.254/latest/meta-data/iam/security-credentials/myrole ];
my $credObj = decode_json($credentials);
my $ACCESS_KEY_ID=$credObj->{AccessKeyId};
my $SECRET_KEY=$credObj->{SecretAccessKey};
my $token=$credObj->{Token};
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime(time);
$year += 1900;
$mon+=1;
my $timestamp = sprintf("%4.4d-%2.2d-%2.2dT%2.2d:%2.2d:%2.2d.000Z",
$year,$mon,$mday,$hour,$min,$sec);
$timestamp =~ s/:/%3A/g;
my $REQUEST="http://sns.us-east-1.amazonaws.com/".
"?TargetArn=$TargetArn".
"&Message=$message".
"&Action=Publish".
"&SignatureVersion=2".
"&SignatureMethod=HmacSHA256".
"&Timestamp=$timestamp".
"&SecurityToken=$token".
"&MessageStructure=json".
"&AWSAccessKeyId=$ACCESS_KEY_ID";
my $awsSign=new Net::Amazon::AWSSign("$ACCESS_KEY_ID", "$SECRET_KEY");
my $signed = $awsSign->addRESTSecret($REQUEST);
$res = `curl -s -o- '$signed'`;
print "returns: $res\n" if -t;
if ($res =~ /<error>/) {
print "ERROR!\n";
return 1;
} else {
return 0;
}
}
- 1. अमेज़ॅन के लिए PHP पुस्तकालय सरल अधिसूचना सेवा
- 2. आईओएस पर पुश अधिसूचनाओं के लिए अमेज़ॅन सरल अधिसूचना सेवा (एसएनएस)?
- 3. अमेज़ॅन एसएनएस -> एसक्यूएस संदेश निकाय
- 4. अमेज़ॅन एसएनएस और अमेज़ॅन एसक्यूएस के बीच क्या अंतर है?
- 5. एंड्रॉइड पर पुश नोटिफिकेशन: Google जीसीएम बनाम अमेज़ॅन एसएनएस?
- 6. PHP के लिए ट्यूटोरियल अमेज़ॅन सरल संग्रहण सेवा
- 7. एंड्रॉइड पर अमेज़ॅन सरल संग्रहण सेवा (एस 3) का उपयोग
- 8. क्या एक जेएस स्क्रिप्ट पर एक अमेज़ॅन एसएनएस संदेश प्राप्त करना संभव है?
- 9. क्या अमेज़ॅन एसएनएस के बराबर एक खुला स्रोत है?
- 10. जावा में अमेज़ॅन एसक्यूएस और एसएनएस के साथ काम करना
- 11. सरल WCF सेवा, सेवा
- 12. सरल हास्केल ग्राफिक्स पुस्तकालय?
- 13. सरल सी छवि पुस्तकालय?
- 14. ईमेल अधिसूचना सेवा
- 15. सरल रूबी इनपुट सत्यापन पुस्तकालय
- 16. अधिसूचना से सेवा शुरू करें
- 17. एंड्रॉइड पुश अधिसूचना सेवा तुलना
- 18. Node.js Restify सरल सेवा
- 19. कमांड प्रॉम्प्ट से विंडोज 8 अधिसूचना सेवा अधिसूचना
- 20. अमेज़ॅन सरल डीबी पहचान बीज बराबर
- 21. zf2 सरल सेवा और viewhelper
- 22. सरल क्लाउड स्टोरेज सेवा API
- 23. सरल जावा सेवा खोज ढांचा
- 24. अधिसूचना
- 25. एक अमेज़ॅन एसक्यूएस (सरल कतार सेवा) कतार से घटनाओं को कैसे हटाएं वास्तव में तेज़?
- 26. ऐप्पल पुश अधिसूचना सेवा सांख्यिकी (apns)
- 27. एपीएनएस (ऐप्पल पुश अधिसूचना सेवा) विश्वसनीयता
- 28. एंड्रॉइड एक्सेसिबिलिटी सेवा अधिसूचना का पता लगाएं
- 29. जावा एपीएनएस (ऐप्पल पुश अधिसूचना सेवा) त्रुटि
- 30. अधिसूचना सेवा में एंड्रॉइड मेमोरी लीक
हां। मैंने कोशिश की। कई असंख्य समस्याएं – Brad
@ ब्रैड कृपया मुझे जिन समस्याओं का सामना करना पड़ा है, उन्हें बताएं। नवीनतम संस्करण https://github.com/dwery/amazon-sns पर उपलब्ध है – dwery