Documentation for IAM指出ResourceAttachUserPolicyDetacherUserPolicy属性应设置为将附加管理策略的用户主体。虽然iot:AttachPrincipalPolicyiot:DetachPrincipalPolicy的文档不够详细,但错误消息


AccessDeniedException:用户:arn:aws:sts :: ACCOUNT_ID:assumed-role / ROLE / CognitoIdentityCredentials未经授权执行:资源上的iot:AttachPrincipalPolicy:COGNITO_ID


使我相信它期望对Cognito身份或身份池使用ARN。但是,指定Cognito documentation中显示的ARN会导致相同的错误。认知身份ARN在策略生成器中也无法通过验证。

我应该指定什么资源,以便允许iot:AttachPrincipalPolicyiot:DetachPrincipalPolicy在Cognito身份上附加/分离IoT策略?

最佳答案

将Cognito身份与AWS IoT结合使用有两条略有不同的路径。 Cognito身份池支持未经身份验证(任何代理都可以获取凭据)或经过身份验证(与诸如Cognito用户池,Facebook,OpenID等提供程序相关的用户)的身份。在使用Cognito获取凭证时,AWS IoT支持两种情况。

使用未经身份验证的案例时,必须将策略附加到使用Cognito身份池创建的cognito_unauth_role。身份访问和管理(IAM)控制台是您在此角色上附加策略的地方。首先,请尝试附加托管策略“ AWSIoTDataAccess”。然后,未经身份验证的Cognito ID可以获取凭证(访问密钥,秘密密钥,会话令牌),这些凭证将传递到AWS IoT以建立连接。

使用经过身份验证的案例时,必须将策略附加到使用您的Cognito身份池和为每个经过身份验证的实体创建的Cognito ID创建的cognito_auth_role。 AWS IoT API AttachPrincipalPolicy是用于将AWS IoT策略附加到Cognito ID的工具。 CLI中该API调用的格式如下:aws iot attach-principal-policy --policy-name myPolicy --principal us-east-1:abcd1234-5678-1234-abcd1234efgh。在这种情况下,主体是已认证实体的Cognito ID。只有同时制定了两个策略,Cognito返回的凭证才能用于建立与AWS IoT的连接。

10-07 13:13
查看更多