Swift AWSIoT中的标识池配置无效

Swift AWSIoT中的标识池配置无效,swift,aws-sdk,mqtt,aws-iot,Swift,Aws Sdk,Mqtt,Aws Iot,我想连接到AWS上我的客户机的MQTT服务。我发现了这一点,这为我节省了大量时间来深入研究API以找到连接AWS MQTT服务的过程 在我的项目中,我更改了constants.swift中的常量,以便访问我的客户机的MQTT服务,如下所示: let AWSRegion = AWSRegionType.USWest2 // e.g. AWSRegionType.USEast1 let CognitoIdentityPoolId = "us-west-2:e95087f0-48a7-4732-b48

我想连接到AWS上我的客户机的MQTT服务。我发现了这一点,这为我节省了大量时间来深入研究API以找到连接AWS MQTT服务的过程

在我的项目中,我更改了
constants.swift
中的常量,以便访问我的客户机的MQTT服务,如下所示:

let AWSRegion = AWSRegionType.USWest2 // e.g. AWSRegionType.USEast1
let CognitoIdentityPoolId = "us-west-2:e95087f0-48a7-4732-b482-4614c7c63db6"
let CertificateSigningRequestCommonName = "MyApp"
let CertificateSigningRequestCountryName = "MyCountry"
let CertificateSigningRequestOrganizationName = "MyOrganization"
let CertificateSigningRequestOrganizationalUnitName = "MyUnit"
let PolicyName = "pubsub_policy"

// This is the endpoint in your AWS IoT console. eg: https://xxxxxxxxxx.iot.<region>.amazonaws.com

let IOT_ENDPOINT = "https://<endpoint>.amazonaws.com" // endpoint is entered correctly!
let ASWIoTDataManager = "MyIotDataManager"
让AWSRegion=AWSRegionType.USWest2//例如AWSRegionType.USEast1
让CognitoIdentityPoolId=“us-west-2:e95087f0-48a7-4732-b482-4614c7c63db6”
让CertificateSigningRequestCommonName=“MyApp”
让CertificateSigningRequestCountryName=“MyCountry”
让CertificateSigningRequestOrganizationName=“MyOrganization”
让CertificateSigningRequestOrganizationalUnitName=“MyUnit”
let PolicyName=“pubsub_policy”
//这是AWS物联网控制台中的端点。如:https://xxxxxxxxxx.iot..amazonaws.com
让IOT_端点=”https://.amazonaws.com“//端点输入正确!
让ASWIoTDataManager=“MyIotDataManager”
但当我按下连接时,应用程序会抛出以下错误:

2018-06-04 17:12:59:992 IoTSampleWift[4999:2464150]响应主体: {“_类型”:“InvalidIdentityPoolConfigurationException”,“消息”:“无效的标识池配置。请检查为此池分配的IAM角色。”}

2018-06-04 17:12:59:994 IoTSampleSwift[4999:2464150] GetCredentialsForIdentity失败。错误是[错误] Domain=com.amazonaws.AWSCognitoIdentityErrorDomain Code=5“(空)” UserInfo={uuuu type=InvalidIdentityPoolConfigurationException, 消息=无效的标识池配置。请检查分配的IAM角色 对于此池。}]

2018-06-04 17:12:59:995 IoTSampleSwift[4999:2464150] 无法刷新。错误是[错误] Domain=com.amazonaws.AWSCognitoIdentityErrorDomain Code=5“(空)” UserInfo={uuuu type=InvalidIdentityPoolConfigurationException, 消息=无效的标识池配置。请检查分配的IAM角色 对于此池。}]

2018-06-04 17:13:00:017 IoTSampleSwift[4999:2464150] 错误:错误域=com.amazonaws.AWSCognitoIdentityErrorDomain代码=5 “(null)”UserInfo={uuuuu type=InvalidIdentityPoolConfigurationException, 消息=无效的标识池配置。请检查分配的IAM角色 对于此池。}

  • 常量.swift中的参数有问题吗
    
  • 在我的客户的服务中是否有一些东西可以启用,以便我可以访问
  • 根据10):p12文件:如果可用,那么我不必每次需要访问此MQTT服务时都动态创建密钥和证书?但是我的客户必须在他的计算机上创建它,并给我证书/密钥,这样我才能在MAC上生成这个p12文件
对不起,我必须问这些简单的问题,因为我是AWS物联网API的新手


关于,

了解您正在使用的物联网身份验证类型会有所帮助。如果您正在使用Cognito进行AWS物联网认证,那么下面的内容肯定会有所帮助

在AWS的IAM控制台中,转到角色。单击您的角色并查看信任关系。在下图中更容易看到此选项卡的位置

StringEquals条件的值很可能与身份池的值不匹配。您可以在Cognito>Federated Identities>单击带有“此处您的标识池名称”的蓝色链接“>编辑标识池(右上角),您的标识池ID位于顶部。如果是这种情况,请单击“编辑信任关系”(如下图所示)并进行编辑,以使键“cognito identit.amazonaws.com::aud”的值与您的标识池ID匹配