2016-11-22 5 views
1
  1. я создал SNS тему
  2. Я создал API шлюза конечной точки, которая вызывает функцию лямбда
  3. Я создал тему подписки HTTPS, который указывает на API шлюза конечной точки

Проблема: все работает нормально, когда AUTH = none, но когда я включил AUTH = AWS_IAM, ни подписка, ни сообщения не доставляются на мою лямбду. Они также не отображаются в журналах Lambda OR Gateway cloudwatch, так как обычно это происходит с ошибками проверки подлинности.Размещение сообщений SNS для AWS_IAM подлинности Api шлюза конечной точки

Вопросы:

  • Что идентификатор поставляется HTTPS конечной точке AWS_IAM так что не позволяет ей (моя первая мысль была ретранслировать SNS плакаты фишку, но это, кажется, не быть)
  • Я не мог найти способ связать конечную точку HTTPS с любой личностью, есть ли способ?
  • Существует много информации о доставке SNS в SQS или Gateway в SNS, но не удалось найти информацию о достижении того, что я пытаюсь сделать.
  • Есть ли способ отладки ошибок аутентификации AWS_IAM? Документация. Я видел советы «проверить priviliges», что я делал много часов, но у меня больше нет идей.

Я был бы рад услышать любые идеи от вас, спасибо.

+0

Как вы подписали конечную точку шлюза API для темы SNS ... Я прочитал документы (http://docs.aws.amazon.com/sns/latest/dg/SendMessageToHttp.html#SendMessageToHttp.prepare) но не очень понял. –

+0

Точно так же вы отправляете свои сообщения на любую конечную точку HTTPS. Вам просто нужно добавить дополнительный код для подтверждения подписки на основе event.Type, тогда вам нужно запустить GET event.SubscribeURL. Извините за отсутствие вашего комментария. – shd

ответ

0

Как вы, возможно, видели в документации, SNS может сделать только Basic/Digest Auth http://docs.aws.amazon.com/sns/latest/dg/SendMessageToHttp.html

Существует раздел в документации о проверке достоверности сообщения, но это код, который вы должны были бы написать самостоятельно или поднять с одного из SDS SDK на бэкэнд. К сожалению, нет никакого способа заставить SNS подписывать запрос с AWS SigV4.

0

Почему вы не позволяете функции Lambda подписываться непосредственно на тему SNS (без прохождения через API-интерфейс)?

Это должно быть простым: https://docs.aws.amazon.com/sns/latest/dg/sns-lambda.html

+0

Это определенно правильный подход, идея заключалась в том, чтобы open-only api был открыт для любого клиента (не обязательно знающего aws). К сожалению, на этом этапе я не могу изменить этот дизайн. – shd

+1

После прочтения документации для SNS еще раз: https://docs.aws.amazon.com/sns/latest/dg/SendMessageToHttp.html Я серьезно сомневаюсь, что SNS может отправлять запросы POST с проверкой подлинности HTTPS IAM на конечные точки шлюза API. Документы говорят только об Basic и Digest Authentication, но IAM - это нечто иное.Другой указатель состоит в том, что нет способа настроить принципал для POST SNS. (Кроме того, переход через шлюз API приводит к дополнительным расходам, которые не нужны, если «клиент»/издатель SNS.) – Digitalkapitaen

0

Вот полная ссылка, которая поможет вам в решении вашей проблемы аутентификации. https://aws.amazon.com/premiumsupport/knowledge-center/iam-authentication-api-gateway/

Если это проблема «Проверить права», ваш пользователь IAM не имеет достаточного доступа к ресурсам для внесения каких-либо изменений.

+0

Я видел, что эта ссылка и другие части моего API работают нормально. Единственная проблема заключается в том, что подписка SNS HTTPS не передает учетные данные пользователя, отправившего сообщение SNS. Другими словами, я не знаю, что такое мой пользователь, или как я назначаю пользователю подписку на HTTPS. – shd

Смежные вопросы