2016-07-28 112 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

相關問題