3

我正在尝试设置 Amazon Ses 通知以转到我的 SQS 队列。我正在按照说明如何创建 SQS 队列,然后是 SNS 主题,并订阅另一个。

但是,在管理控制台中,订阅会出现“待确认”。

我正在使用 .NET AWS SDK,如何确认订阅?甚至更好,为什么我必须确认?文件说_

如果队列的所有者创建了订阅,则订阅会自动确认,并且订阅应该几乎立即处于活动状态。

我以所有者身份将我的 AWS 凭证用于所有 API 调用,所以我不明白为什么需要确认,但无论如何我该怎么做?

    private static string CreateBounceTopicAndQueue(IAmazonSQS sqsClient, IAmazonSimpleNotificationService snsClient)
    {
        // 1. Create an Amazon SQS queue named ses-bounces-queue.
        CreateQueueResponse createQueueResponse = sqsClient.CreateQueue(new CreateQueueRequest()
        {
            QueueName = AppGlobal.SesBouncesQueue,
            Attributes = new Dictionary<string, string>() {
                { "ReceiveMessageWaitTimeSeconds", "20" }
            }
        });
        string queueUrl = createQueueResponse.QueueUrl;

        // 2. Create an Amazon SNS topic named ses-bounces-topic
        CreateTopicResponse createTopicResponse = snsClient.CreateTopic(new CreateTopicRequest
        {
            Name = AppGlobal.SesBouncesTopic
        });
        string topicArn = createTopicResponse.TopicArn;

        // 3. Configure the Amazon SNS topic to publish to the SQS queue
        var response =  snsClient.Subscribe(new SubscribeRequest
        {
            TopicArn = topicArn,
            Endpoint = queueUrl,
            Protocol = "https"
        });

        return queueUrl;
    }
4

1 回答 1

1

您不会通过使用队列 URL 创建 https 订阅来将 SQS 队列订阅到 SNS 主题。

您使用队列的ARN(不是 Web 端点)作为端点创建一个“ sqs ”(不是 https)协议订阅。


protocol
Type: System.String
The protocol you want to use. 
...
sqs -- delivery of JSON-encoded message to an Amazon SQS queue

endpoint
Type: System.String
The endpoint that you want to receive notifications. Endpoints vary by protocol...

For the sqs protocol, the endpoint is the ARN of an Amazon SQS queue

http://docs.aws.amazon.com/sdkfornet/latest/apidocs/items/MSNS_SNSSubscribe_String_String_StringNET4_5.html

于 2014-10-16T05:04:40.937 回答