Você poderia fazer algo assim:
Pré-requisitoseconfiguração:
- InstaleoJavascriptSDKnoseudispositivoincorporado(comovocênãomencionouaslimitaçõesdodispositivo,essaarquiteturapresumequeseudispositivoécapazdeexecutaroJavascriptSDK)
- Crieum'Pooldeusuários'noCognito(pormeiodoConsoledaAWSouAPI,CLI,etc.)
- Comopartedaconfiguraçãoinicialdodispositivo,inscrevaumnovousuáriopordispositivousandoatributosexclusivosquesealinhamàarquitetura,aopúblico-alvodesejadodoaplicativoeaomodelodenegócios
Fluxodeautenticação:
- QuandovocêdesejaenviarumanovamensagemparaoSNS,asseguintesaçõesocorrem:
- Seuaplicativo(nodispositivoincorporado)iniciaumaautenticaçãodesenharemotaseguracomoCognito(pormeiodosmétodosdoSDK,éclaro)
- Seasolicitaçãodeautenticaçãoforbem-sucedida,oCognitoresponderácomumtoken
- SeuaplicativousaotokenechamaumpontodeextremidadedoPOSTexpostopeloAPIGatewayeautenticacomo
token
recebidonaetapa3 - O
token
éusadoparaautenticaçãono"Pool de usuários" no Cognito para verificar se a solicitação veio de um dispositivo genuíno - Se a solicitação de autenticação for bem-sucedida, o API Gateway invocará uma função do Lambda que tenha uma função do IAM apropriada anexada a ela. Essa função do IAM essencialmente permite a publicação de mensagens em tópicos do SNS
- A função Lambda publica a mensagem para o tópico SNS desejado. Como você mencionou que cada dispositivo publicará em seu próprio Tópico do SNS, as informações sobre o Tópico do SNS poderão ser armazenadas nos campos de metadados do usuário no Cognito