Amazon Simple Notification Serviceを使い始めましたが、サービスにアクセスするために使用できるPerlライブラリが見つかりませんでした。自分のライブラリを作成するのではなく、SNSサービスのためにPerlライブラリを使用している人がいるかどうか、誰かがSNSサービスを推奨しているかどうかを見たいと思っていました。Amazon SNS(Simple Notification Service)Perlライブラリ
5
A
答えて
1
私はネット使用::アマゾン:: 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;
私は実際には最終的にはXML :: Simpleはを使用し、解析するために、カールからXMLInに結果を渡しますAmazonが返すXML。あなたは何をしますか...
2
Amazon::SNSが存在します。ドキュメントは非常にまばらですが、基本的なように見え、コードの品質は私にとってはうまく見えます。
0
私はBrad'sを出発点として使用しました。Bradに感謝します! ローカルタイムをgmtimeに変更しました。 トピックARNと役割ベース認証を使用していました。 GCT jsonラッパーに入れたときに、SecurityTokenを渡してMessageを動作させる必要がありました。 コードでは、プラットフォームを検出し、それに応じてペイロードを調整するために、TargetARNのアプリケーション名を使用します。 注:Windowsコードはテストされていません。
最後に注目すべきは、SNSに必要と思われる狂ったネストされたjsonエンコードです。
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. Amazon Simple Queue Service(SQS)
- 2. Amazon SNS java - カスタムヘッダー?
- 3. Amazon MapReduce HiveはSimple Queue Serviceを呼び出しています
- 4. Java APNS(Apple Push Notification Service)エラー
- 5. Apple Push Notification Service with Python
- 6. AWS PHP SDKを使用してSimple Notification Service(SNS)上にAPNS Platformアプリケーションを作成するにはどうすればよいですか?
- 7. CORBA Notification Serviceの適用方法は?
- 8. S3 Amazon Web Service Permission
- 9. Amazon Simple EmailサービスのPython API
- 10. Amazon AWS SNSのネイティブスクリプトサポート(プッシュ通知)
- 11. Androidのプッシュ通知:Google GCM vs. Amazon SNS?
- 12. Amazon SNSのiPhone/APN統合のための設定
- 13. Amazon SNSとAmazon SQSの違いは何ですか?
- 14. AWS SNS配信コールバック
- 15. Express/Node.jsを使用してAmazon SNSポスト本体にアクセスするには
- 16. Amazon SQS(Simple Queue Service)キューからイベントを削除するにはどうすればよいですか?
- 17. Postgres Plus CloudデータベースとAmazon Relational Database Service(Amazon RDS)
- 18. Perl Proc :: Simpleバックグラウンドサブルーチンの値を返す
- 19. 向上LWP :: SimpleはPerlのパフォーマンス
- 20. サブスクリプションARNをAmazon SNSから購読解除するには
- 21. restまたはsoap apiを使用したAmazon SNSへのアクセス
- 22. Amazon AWS SNS:トピック内でセグメント化する方法は?
- 23. Amazon APIライブラリfor Python?
- 24. Androidスタジオ - Simple-Xmlライブラリをインポートする
- 25. Amazon SNSとは何ですか?アカウントの活動で奇妙な使用
- 26. SNSバッチ公開
- 27. PythonでPythonでAPNS形式のJSONメッセージをフォーマットしてAmazon SNSで使用する
- 28. どうアマゾンSNS、アマゾンAPIサーバーログ
- 29. Push Notification in android c2dm
- 30. Apache CouchDBのAmazon Simple DBとの違いは何ですか?
はい。私はそれを試みた。数多くの問題。 – Brad
@ブラッドあなたが直面している問題を教えてください。最新バージョンはhttps://github.com/dwery/amazon-snsで入手できます。 – dwery