Я хочу, чтобы авторизованный пользователь когнито мог публиковать 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 () для получения учетных данных, но не знаю, как их использовать для создания соединение.
Буду признателен за помощь, как это сделать.
спасибо