У меня проблемы с подключением к aws iot через cognito.
Я пытаюсь подключить Авторизованного пользователя к AWS IoT ядру с xamarin. Я успешно добавил пользователя и затем получил токены из пула пользователей Cognito. Проблема, кажется, состоит в двух вещах:
- мой код
или
разрешений для ролей IAM или / и настройки Cognito Federated Identities.
1: мой код
var credintelas = new AnonymousAWSCredentials();
var provider = new AmazonCognitoIdentityProviderClient(credintelas, RegionEndpoint);
CognitoUserPool userPool = new CognitoUserPool(PoolId, AppClienID, provider);
CognitoUser user = new CognitoUser("UserName", AppClienID, userPool, provider);
string password = "Password";
AuthFlowResponse context = await user.StartWithSrpAuthAsync(new InitiateSrpAuthRequest()
{
Password = password
}).ConfigureAwait(false);
CognitoAWSCredentials credentials = user.GetCognitoAWSCredentials(IdentyPoolID, RegionEndpoint);
, а затем я передаю кредиты IoTdataclient следующим образом,
AmazonIotDataConfig amazonIotDataConfig = new AmazonIotDataConfig();
amazonIotDataConfig.RegionEndpoint = RegionEndpoint;
amazonIotDataConfig.UseHttp = false;
amazonIotDataConfig.SignatureVersion = "4";
amazonIotDataConfig.ServiceURL = amazonIotDataConfig.DetermineServiceURL();
AmazonIotDataClient amazonIotDataClient = new AmazonIotDataClient(credentials, amazonIotDataConfig);
string jsonString = "{ \"xxxStart\" : true, \"xxxxStart\" : false, \"xxxxStop\" : false}";
MemoryStream memStream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString ?? string.Empty));
var publishreq = new PublishRequest
{
Payload = memStream,
Qos = 0,
Topic = "TESTI/DEMO"
};
await amazonIotDataClient.PublishAsync(publishreq);
AWS настройка консоли:
A) Я настроил IAM Auth_role для идентификации Cognito и подключил его к пулу идентификации auth_role
Политика IAM, которая привязана к пулу идентификации
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:*"
],
"Resource": "*"
}
]
}
B) Политика Iot была подключена к пулу идентификации Cognito с использованием AWS Cli
Политика IoT
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iot:*",
"Resource": "*"
}
]
}
C) Пул пользователей Cognito был привязан к пулу идентификации Cognito как провайдеру автора
Так чего мне не хватает?