小编Kri*_*fer的帖子

AWS IoT Core 连接被带有附加策略的经过身份验证的 Cognito 用户拒绝 [MQTT over WSS]

之前也有类似的问题,我也搜索了很多,虽然我找到的答案并没有帮助我解决问题。

我正在尝试为我的 IoT 设备连接到 AWS 的 MQTT 代理,我正在通过 AWS Amplify 的 PubSub 库通过 Web 套接字使用 MQTT。身份验证也通过 Amplify 处理(是的,用户已成功通过身份验证)。当我尝试连接时,它立即关闭并显示错误消息:

错误代码:8,错误消息:AMQJS0008I 套接字已关闭。

我已经为身份池设置了 IAM 角色,并将 IoT 策略附加到经过身份验证的用户(使用从 Amplify 检索的身份 ID)。

用于附加策略的命令:

aws iot attach-principal-policy --policy-name "Air-RME-Users" --principal "ap-northeast-1:4f76a019-9f84-44f0-a23d-48357210016c"
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏,谢谢!

CloudWatch 物联网日志:

{
    "timestamp": "2018-07-05 04:00:42.998",
    "logLevel": "ERROR",
    "traceId": "<removed>",
    "accountId": "<removed>",
    "status": "Failure",
    "eventType": "Connect",
    "protocol": "MQTT",
    "clientId": "4e900ea4-8f05-4022-98a8-c1b26280b2a2",
    "principalId": "<removed>:CognitoIdentityCredentials",
    "sourceIp": "<removed>",
    "sourcePort": 54641,
    "reason": "AUTHORIZATION_FAILURE"
}
Run Code Online (Sandbox Code Playgroud)

Cognito 身份池策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect",
                "iot:Publish", …
Run Code Online (Sandbox Code Playgroud)

javascript amazon-web-services aws-iot aws-cognito aws-amplify

5
推荐指数
1
解决办法
1996
查看次数