Amplify PubSub javascript подписаться и опубликовать sh с помощью когнитивной авторизации: как? - PullRequest
0 голосов
/ 06 мая 2020

Я хочу, чтобы авторизованный пользователь когнито мог публиковать sh и подписываться на AWS IoT с помощью Amplify PubSub, но у меня возникают трудности с этим.

я использую javascript (внутри Vue app)

Мне удалось опубликовать sh и подписаться на AWS IoT с помощью aws -iot-device-sdk, поэтому все политики, et c работают.

вот код, который я использую с PubSub:

const region = "eu-west-1";
const endpoint = "blahBlah-ats.iot.eu-west-1.amazonaws.com";
const currentlySubscribedTopic = "myTopic";
Amplify.addPluggable(
  new AWSIoTProvider({
    aws_pubsub_region: region,
    // aws_pubsub_endpoint: "xxxxxxzbx-ats.iot.eu-west-1.amazonaws.com"
    // aws_pubsub_endpoint: 'wss://xxxxxxxxxxxxx.iot.<YOUR-IOT-REGION>.amazonaws.com/mqtt',
    aws_pubsub_endpoint: "wss://" + endpoint + "/mqtt"
  })
);

для подписки:

PubSub.subscribe(currentlySubscribedTopic).subscribe({
            next: data => console.log("Message received", data),
            error: error => console.error(error),
            close: () => console.log("Done")
          });

на publi sh Я называю этот метод:

async publishMessage() {
      console.log("publishing message...");
      await PubSub.publish(currentlySubscribedTopic, {
        msg: "Hello to all subscribers!"
      });
      console.log("published..");
    }

к сожалению, ничего не происходит (даже ошибок), поэтому я явно делаю что-то не так.

как мне на самом деле установить соединение? есть ли функция connect ()?

как мне добавить учетные данные когнитивного доступа? Я пробовал это внутри Auth.currentSession ():

AWS.config.update({
          region: "eu-west-1",
          credentials: new AWS.CognitoIdentityCredentials({
            IdentityPoolId: "eu-west-1:xxxx-7be8-487a-9e0b-91980xxx976e",
            Logins: {
              // optional tokens, used for authenticated login
              "cognito-idp.eu-west-1.amazonaws.com/eu-west-1_xxxx4OFmI":
                session.idToken.jwtToken
            }
          })
        });

и могу использовать AWS .config.credentials.get () для получения учетных данных, но не знаю, как их использовать для создания соединение.

Буду признателен за помощь, как это сделать.

спасибо

...