2016-07-28 38 views
5

Documentation for IAM指出应将Resource-AttachUserPolicyDetacherUserPolicy的属性设置为托管策略将附加到的用户主体。虽然iot:AttachPrincipalPolicyiot:DetachPrincipalPolicy和文档都没有详细的,该错误消息控制对Cognito身份的AWS IoT策略操作的访问

AccessDeniedException异常:用户:ARN:AWS:STS :: ACCOUNT_ID:假定角色/角色/ CognitoIdentityCredentials未被授权执行:IOT:AttachPrincipalPolicy在资源:COGNITO_ID

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

我应该指定哪些资源,以便iot:AttachPrincipalPolicyiot:DetachPrincipalPolicy可以在Cognito身份上附加/分离物联网政策?

回答

7

将Cognito身份与AWS IoT结合使用有两条略有不同的路径。 Cognito身份池支持未经身份验证(任何代理可以获得凭据)或身份验证(与Cognito用户池,Facebook,OpenID等供应商绑定的用户)身份。 AWS IoT支持使用Cognito获取凭证时的两种情况。

使用未经身份验证的大小写时,您必须将策略附加到Cognito_unauth_role,该Cognito_unauth_role会使用您的Cognito身份池创建。身份访问&管理(IAM)控制台是您将策略附加到此角色的地方。要开始,请尝试附加托管策略“AWSIoTDataAccess”。然后,未经身份验证的Cognito ID可以获得传递给AWS IoT以建立连接的凭证(访问密钥,密钥,会话令牌)。

当使用已验证的案例时,您必须将一个策略附加到cognito_auth_role,该策略通过Cognito身份池为每个已验证实体创建的Cognito ID创建。 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。在这种情况下,委托人是认证实体的Cognit ID。只有采取两项政策,Cognito才能返回凭证,以便与AWS IoT建立连接。

+2

假设用户刚注册,我如何将一个策略附加到为认证实体创建的Cognito ID?有我可以使用的触发器吗? – webjay

+0

@webjay,哇,我来到这里的同一个问题?你有任何解决办法吗? – Roskoto

+0

@Roskoto我们有客户将在IoT中制定的策略附加给新用户。有点奇怪,但它的作品。 – webjay

相关问题