Я не совсем уверен, где может быть ваша проблема, но я боролся с той же проблемой, когда впервые начал использовать Amplify PubSub.Для меня это был вопрос политики.Таким образом, может помочь одна из следующих вещей:
Подключите документ своей политики вещей к идентификатору пользователя для объединенного пула (а не к идентификатору из пула пользователей).Мой документ политики выглядит следующим образом:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect",
"iot:AttachPrincipalPolicy",
"iot:Publish",
"iot:Subscribe",
"iot:Receive",
"iot:GetThingShadow",
"iot:UpdateThingShadow",
"iot:DeleteThingShadow"
],
"Resource": [
"*"
]
}
]
}
Чтобы прикрепить / обновить политику для всех моих пользователей (не так много), я использую функцию Lambda для этого:
var AWS = require("aws-sdk");
const cognito = new AWS.CognitoIdentityServiceProvider({apiVersion: '2016-04-18'});
var cognitoidentity = new AWS.CognitoIdentity();
var iot = new AWS.Iot({apiVersion: '2015-05-28'});
exports.handler = (event, context, callback) => {
var params = {
IdentityPoolId: 'eu-central-1:xxxxxxxx-xxxx-xxxx-xxx-xxxxxxxx', /* change this */
MaxResults: 50,
};
cognitoidentity.listIdentities(params, function(err, data) {
if (err) console.log(err, err.stack);
else {
addPolicies(data.Identities);
}
});
function addPolicies(users) {
for (let i = 0; i<users.length;i++) {
var params2 = {
policyName: 'myIOTPolicy',
principal: users[i].IdentityId
};
iot.attachPrincipalPolicy(params2, function(err, data) {
if (err) console.log(err, err.stack);
else console.log(data);
});
}
}
callback(null, event);
};
Для моей аутентифицированной роли в пуле удостоверений к этой роли прикреплена следующая политика:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:AttachPrincipalPolicy",
"iot:Connect",
"iot:Publish",
"iot:Subscribe",
"iot:Receive",
"iot:GetThingShadow",
"iot:UpdateThingShadow",
"iot:DeleteThingShadow"
],
"Resource": [
"*"
]
}
]
}
Надеюсь, это поможет