SNS GetEndpointAttributes & Publish to Endpoint недоступны в .Net SDK

Я использую v2.5.26.2, версию среды выполнения v2.0.50727 AWS SDK для .NET и заметил, что вызовы GetEndpointAttributes недоступны из клиента SNS, и вы не можете указать конечную точку Arn в сообщении запроса на публикацию.

В документации для APi, GetEndpointAttributes Method, для SNS указано, что вы должны быть в состоянии сделать обе эти вещи.

Я устал задавать этот вопрос на форумах поддержки Aws, чтобы выяснить, почему этот звонок был недоступен, но ответ еще не получен более чем через неделю.

Я также пробовал несколько веб-поисков по этой проблеме, но безрезультатно.

Является ли это ограничением .Net SDK или, возможно, ограничением версии, которую я использую? Если да, есть ли обходной путь для выполнения любого из этих вызовов.

Редактировать: образцы кода по запросу (хотя показывать особо нечего, так как объекты не распознаются

Получить атрибуты конечной точки

Итак, согласно Документация Amazon для GetEndpointAttributes, сначала нам нужно создайте класс, производный от виртуального класса GetEndpointAttributes, например.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Amazon.SimpleNotificationService;
using Amazon.SimpleNotificationService.Model;

namespace Company.Project.Sns
{
     public class SnsGetEndpointAttributes : GetEndpointAttributes
     {

     }
}

Что создает следующую ошибку компилятора

Не удалось найти имя типа или пространства имен «GetEndpointAttributes».


person pat8719    schedule 31.01.2014    source источник
comment
Можете ли вы поделиться кодом, который вы используете?   -  person Wade Matveyenko    schedule 06.02.2014
comment
@WadeMatveyenko добавил тот небольшой код, который я мог, поскольку объекты не могут быть найдены   -  person pat8719    schedule 07.02.2014


Ответы (1)


Вы должны попытаться получить все конечные точки, подписанные на ваше приложение, делающее запрос, используя его ARN. Ответ содержит набор из всех конечных точек и их атрибутов, затем вы можете найти совпадение и получить его атрибуты:

public Dictionary<string, string> GetEndpointAttributes(string platformArn, string endpointArn)
    {
        var listPlatformEndpointsRequest = new ListEndpointsByPlatformApplicationRequest();
        listPlatformEndpointsRequest.PlatformApplicationArn = platformArn;
        var response = SnsClient.ListEndpointsByPlatformApplication(listPlatformEndpointsRequest);
        Dictionary<string, string> endpointAttributes = response.Endpoints.Exists(x => x.EndpointArn.Equals(endpointArn))
            ? response.Endpoints.Find(x => x.EndpointArn.Equals(endpointArn)).Attributes
            : null;
        return endpointAttributes;
    }

Я не уверен, что вы имеете в виду, когда говорите, что не можете нацеливаться на ARN конечной точки, потому что каждый раз, когда вы подписываетесь на конечную точку, вы должны хранить ARN внутри БД или что-то в этом роде. В любом случае, вот пример публикации сообщения, если вы можете получить доступ к ARN конечной точки:

public void SendMessage(string endpointArn, string message)
    {
        var request = new PublishRequest();
        request.Message = message;
        request.TargetArn = endpointArn;

        var response = SnsClient.Publish(request);
        return response;
    }

Надеюсь, это поможет вам.

person Andrés    schedule 30.06.2016