AWSIoT

时间:2018-06-04 11:11:51

标签: swift aws-sdk mqtt aws-iot

我想在AWS上连接到我客户端的MQTT服务。我找到了这个Amazon IoT Sample,这节省了我花费大量时间来挖掘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"

但是当我按Connect时,应用会抛出此错误:

  

2018-06-04 17:12:59:992 IoTSampleSwift [4999:2464150]回复正文:   {“__ type”:“InvalidIdentityPoolConfigurationException”,“message”:“无效的标识池配置。检查此池的已分配的IAM角色。”}

     

2018-06-04 17:12:59:994 IoTSampleSwift [4999:2464150]   GetCredentialsForIdentity失败。错误是[错误   Domain = com.amazonaws.AWSCognitoIdentityErrorDomain Code = 5“(null)”   的UserInfo = {__类型= InvalidIdentityPoolConfigurationException,   message =无效的标识池配置。检查分配的IAM角色   这个游泳池。}]

     

2018-06-04 17:12:59:995 IoTSampleSwift [4999:2464150]   无法刷新。错误是[错误   Domain = com.amazonaws.AWSCognitoIdentityErrorDomain Code = 5“(null)”   的UserInfo = {__类型= InvalidIdentityPoolConfigurationException,   message =无效的标识池配置。检查分配的IAM角色   这个游泳池。}]

     

2018-06-04 17:13:00:017 IoTSampleSwift [4999:2464150]   错误:错误Domain = com.amazonaws.AWSCognitoIdentityErrorDomain Code = 5   “(null)”UserInfo = {__ type = InvalidIdentityPoolConfigurationException,   message =无效的标识池配置。检查分配的IAM角色   这个游泳池。}

  • Constants.swift中的参数有问题吗?
  • 我的客户服务是否可以启用,以便我可以访问?
  • 根据10):p12文件:如果可用,那么每次我需要访问此MQTT服务时,我都不必动态创建密钥和证书?但我的客户必须在他的Amazon AWS IoT Console上创建它并给我证书/密钥,以便我可以在我的MAC上生成这个p12文件?

很抱歉,我不得不问这些简单的问题,因为我是AWS IoT API的新手。

此致

1 个答案:

答案 0 :(得分:0)

这将有助于您了解所使用的IoT身份验证类型。如果您使用Cognito进行AWS IoT身份验证,那么以下内容肯定会有所帮助。

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

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