Не удается получить HTTP-уведомления от eBay в AWS API Gateway - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь настроить API уведомлений eBay для отправки уведомлений на созданный мною шлюз API AWS.Я уже подтвердил, что API-шлюз может получать HTTP-запросы POST без аутентификации, используя команды cURL, отправленные из нескольких источников и IP-адресов, поэтому проблема не в этом.

Вот что я установил, используя SetNotificationPreferences :

<?xml version="1.0" encoding="UTF-8"?>
<SetNotificationPreferencesRequest xmlns="urn:ebay:apis:eBLBaseComponents">
    <!-- Use the Developer portal or the <ApplicationDeliveryPreferences> container to set the Application delivery settings -->
    <RequesterCredentials>
        <eBayAuthToken>{token_here}</eBayAuthToken>
    </RequesterCredentials>
    <ErrorLanguage>en_US</ErrorLanguage>
    <WarningLevel>High</WarningLevel>
    <ApplicationDeliveryPreferences>
        <AlertEmail>mailto://{my_email_here}</AlertEmail>
        <AlertEnable>Enable</AlertEnable>
        <ApplicationEnable>Enable</ApplicationEnable>
        <ApplicationURL>{api_gateway_url_here}</ApplicationURL>
        <DeviceType>Platform</DeviceType>
        <DeliveryURLDetails>
            <DeliveryURLName>Email</DeliveryURLName>
            <DeliveryURL>mailto://{my_email_here}</DeliveryURL>
            <Status>Enable</Status>
        </DeliveryURLDetails>
        <DeliveryURLDetails>
            <DeliveryURLName>Gateway</DeliveryURLName>
            <DeliveryURL>{api_gateway_url_here}</DeliveryURL>
            <Status>Enable</Status>
        </DeliveryURLDetails>
    </ApplicationDeliveryPreferences>

    <DeliveryURLName>Email,Gateway</DeliveryURLName>

    <UserDeliveryPreferenceArray>
        <NotificationEnable>
            <EventType>FixedPriceTransaction</EventType>
            <EventEnable>Enable</EventEnable>
        </NotificationEnable>
        <NotificationEnable>
            <EventType>ItemSold</EventType>
            <EventEnable>Enable</EventEnable>
        </NotificationEnable>
        <NotificationEnable>
            <EventType>ItemListed</EventType>
            <EventEnable>Enable</EventEnable>
        </NotificationEnable>
        <NotificationEnable>
            <EventType>ItemRevised</EventType>
            <EventEnable>Enable</EventEnable>
        </NotificationEnable>
    </UserDeliveryPreferenceArray>
</SetNotificationPreferencesRequest>

Я также позвонил GetNotificationPreferences , чтобы убедиться, что настройки были сохранены правильно, и они были.

Я получаю уведомления XML на адрес электронной почты, ноЯ не получаю HTTP-запросы.

Кто-нибудь еще успешно настроил eBay для отправки уведомлений на AWS или другие конечные точки HTTP? Я готов изменить свой технический стек, например настроитьСервер EC2 вместо конечной точки шлюза API.

Я подозреваю, что eBay Notification API не может подключиться к AWS API Gateway, потому что у меня была эта проблема в прошлом.Например, другая служба API RESTful не поддерживала протокол TLS 1.2, который требуется AWS API Gateway для соединений, но я не доказал, что это так.Я собираюсь настроить другую службу конечных точек HTTP не-AWS API Gateway для получения запросов от eBay для проверки этой теории.

Обновление 1

После просмотра стека в течение еще 24 часов яя вижу несколько успешных звонков от eBay Notification API через AWS API Gateway.Однако количество успешных вызовов HTTP не соответствует количеству отправленных электронных писем.У меня все еще настроены параметры уведомлений, как указано выше, и я получаю количество уведомлений по электронной почте, которое я ожидаю, исходя из количества событий, которые я наблюдаю.

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

Примечание:У меня не было достаточно времени, чтобы успешно настроить еще один веб-сервер API-интерфейса не-AWS для получения HTTP-уведомлений, чтобы определить, является ли проблема самим AWS.Я не исключаю, что это не вина eBay ;-).Я открыт для предложений о простейшем способе выполнения этой задачи.Я искал такие инструменты, как Mockbin , но я бы предпочел что-то, использующее HTTPS.

Обновление 2

Я нашел Webhook Tester и настроилeBay для отправки уведомлений на пользовательский сайт.Я запустил несколько событий в eBay, и я был удивлен, увидев, что уведомления приходят как по электронной почте, так и через Webhook Tester, но через API-шлюз не поступало никаких уведомлений.Я до сих пор не уверен, почему API-шлюз либо не получает, либо не принимает запросы последовательно от eBay.Я бы предпочел продолжать использовать API Gateway, но, похоже, в крайнем случае я мог бы использовать код из Webhook Tester для создания собственной конечной точки веб-сервера.

Обновление 3

Каким-то образом я изменил Тип конечной точки в API Gateway с Edge Optimized на Regional .Я запустил еще несколько событий в eBay, а также оставил его в течение 2 часов для захвата событий, запускаемых системой.Теперь я вижу все больше и больше согласованных событий, отправляемых в API Gateway.Я не уверен, почему это изменение имело такое значение, и я планирую исследовать его подробнее.

В качестве примера, вот как настроить тип конечной точки в проекте без сервера: https://serverless.com/framework/docs/providers/aws/events/apigateway/#configuring-endpoint-types

Также полезно: https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-basic-concept.html

1 Ответ

0 голосов
/ 19 ноября 2018

После еще нескольких дней просмотра запросов, поступающих из уведомлений eBay на API-шлюз AWS, я готов сказать, что изменение типа конечной точки на «региональный» решило проблему.Я не могу точно сказать, почему, но я могу точно сказать, что я получаю все события, которые я ожидаю получить.

Если у кого-то есть дополнительная информация о том, почему это изменение работает, я весь слух,: -)

...