2017-07-14 69 views
1

我有一個嵌入式設備,需要寫入S3的能力。我想避免給嵌入式設備一個實際的AWS IAMUser。我正在考慮使用Cognito獲得對S3的寫入權限。允許Cognito用戶寫入S3

我有一個組,一個用戶一個用戶羣(現在)。該組具有允許訪問寫入某個S3存儲桶的附加策略。該池已設置爲只有管理員可以創建新用戶。我設法認證了認證用戶並有權刷新令牌和idTokens。我正在尋找使用這些令牌寫入我的S3桶。

我試圖按照試圖跟隨文檔,但我感到困惑。我想我需要一個聯合身份池,但我沒有要求公共提供者。我只想讓我的認知用戶組寫信給s3。

有一個簡單的解決方案,允許用戶cognito寫S3沒有聯合身份,或者如果不做我需要一個後端服務令牌的聯合身份?

我一直在使用權證https://github.com/capless/warrant爲使身份驗證:

from warrant.aws_srp import AWSSRP                                                              
import boto3                                                                   

client = boto3.client('cognito-idp')                                                             

aws = AWSSRP(username='<username>', password='<password>', pool_id='<pool>',                                                
     client_id='<clientid>', client=client)                                                    

tokens = aws.authenticate_user()      

任何提示將不勝感激!

+0

需要調用STS AssumeRoleWithWebIdentity使用Cognito令牌來獲取暫時的AWS憑據你再使用S3。順便說一下,引入用戶池的原始博客帖子(作爲現在稱爲聯合身份池的自管理替代品)很有用:https://aws.amazon.com/blogs/aws/new-user-pools - 用於-亞馬遜cognito /。無需Facebook等。 – jarmod

回答

2

你確實是一個聯合身份池。在身份提供者部分,您選擇Cognito並輸入您的池ID和池客戶端ID。然後,您需要提供身份池authenticatedunauthenticated roles。您可以使用這些角色來提供S3寫入權限。

這是身份提供者設置的默認行爲。如果您希望角色來自您的用戶所在的組,則需要在身份提供商部分的Choose role from token選項中設置您的池和客戶端ID的位置。