23

AmazonのAWSSDKforC#とSimpleNotificationServiceで公開しようとしています。

SDKに付属しているサンプルはなく、2時間のグーグルで見つけたサンプルはWeb上のどこにもありません。私はこれを思いついたが、それは単一の文字列「TopicARN」よりも多くの情報を生成しない例外をスローしている-内部例外はない-ナフィン!
誰かがAWSSDKSNSを使用してC#経由でメッセージを正常に送信した場合は、最も基本的な実例でさえ見たいと思います。最新のSDK1.5xを使用しています

コードは次のとおりです。

string resourceName = "arn:aws:sns:us-east-1:xxxxxxxxxxxx:StackOverFlowStub";
AmazonSimpleNotificationServiceClient snsclient = new AmazonSimpleNotificationServiceClient(accesskey,secretkey);
AddPermissionRequest permissionRequest = new AddPermissionRequest()
                .WithActionNames("Publish")
                .WithActionNames(accesskey)
                .WithActionNames("PrincipleAllowControl")
                .WithActionNames(resourceName);
snsclient.AddPermission(permissionRequest);

PublishRequest pr = new PublishRequest();
pr.WithMessage("Test Msg");
pr.WithTopicArn(resourceName);
pr.WithSubject("Test Subject");
snsclient.Publish(pr);
4

1 に答える 1

29

以下は、トピックの作成、トピックの表示名の設定、トピックへの電子メール アドレスのサブスクライブ、メッセージの送信、トピックの削除を行うサンプルです。続行する前に、電子メールを待機/確認する必要がある場所が 2 つあります。Clientはクライアント インスタンス、topicNameは任意のトピック名です。

// Create topic
string topicArn = client.CreateTopic(new CreateTopicRequest
{
    Name = topicName
}).CreateTopicResult.TopicArn;

// Set display name to a friendly value
client.SetTopicAttributes(new SetTopicAttributesRequest
{
    TopicArn = topicArn,
    AttributeName = "DisplayName",
    AttributeValue = "StackOverflow Sample Notifications"
});

// Subscribe an endpoint - in this case, an email address
client.Subscribe(new SubscribeRequest
{
    TopicArn = topicArn,
    Protocol = "email",
    Endpoint = "sample@example.com"
});

// When using email, recipient must confirm subscription
Console.WriteLine("Please check your email and press enter when you are subscribed...");
Console.ReadLine();

// Publish message
client.Publish(new PublishRequest
{
    Subject = "Test",
    Message = "Testing testing 1 2 3",
    TopicArn = topicArn
});

// Verify email receieved
Console.WriteLine("Please check your email and press enter when you receive the message...");
Console.ReadLine();

// Delete topic
client.DeleteTopic(new DeleteTopicRequest
{
    TopicArn = topicArn
});
于 2012-10-22T17:43:12.727 に答える